Project

General

Profile

Download (3.32 KB) Statistics
| Branch: | Tag: | Revision:

runcible / test / extensions / distribution_test.rb @ master

1
require 'rubygems'
2
require 'minitest/autorun'
3

    
4
require './lib/runcible'
5
require './test/extensions/unit_base'
6
require './test/support/repository_support'
7

    
8
module Extensions
9
  class TestDistribution < MiniTest::Unit::TestCase
10
    def self.before_suite
11
      self.support = RepositorySupport.new
12
      @@extension = TestRuncible.server.extensions.distribution
13
      self.support.create_and_sync_repo(:importer => true)
14
    end
15

    
16
    def self.after_suite
17
      support.destroy_repo
18
    end
19

    
20
    def test_content_type
21
      assert_equal 'distribution', @@extension.content_type
22
    end
23

    
24
    def test_all
25
      response = @@extension.all
26

    
27
      assert_equal 200, response.code
28
      refute_empty response
29
    end
30

    
31
    def test_find
32
      id = @@extension.all.sort_by { |p| p['id'] }.first['id']
33
      response = @@extension.find(id)
34

    
35
      refute_empty response
36
      assert_equal id, response['id']
37
    end
38

    
39
    def test_find_by_unit_id
40
      id = @@extension.all.sort_by { |p| p['id'] }.first['_id']
41
      response = @@extension.find_by_unit_id(id)
42

    
43
      refute_empty response
44
      assert_equal id, response['_id']
45
    end
46

    
47
    def test_find_unknown
48
      response = @@extension.find_all(['f'])
49

    
50
      assert_empty response
51
    end
52

    
53
    def test_find_all_by_unit_ids
54
      id = @@extension.all.sort_by { |p| p['id'] }.first['_id']
55
      response = @@extension.find_all_by_unit_ids([id])
56

    
57
      refute_empty response
58
      assert_equal id, response.first['_id']
59
    end
60

    
61
    def test_find_all
62
      pkgs = @@extension.all.sort_by { |p| p['id'] }
63
      ids = pkgs[0..2].map { |p| p['id'] }
64
      response = @@extension.find_all(ids)
65

    
66
      assert_equal 200, response.code
67
      assert_equal ids.length, response.length
68
    end
69
  end
70

    
71
  class TestDistributionCopy < UnitCopyBase
72
    def self.extension_class
73
      TestRuncible.server.extensions.distribution
74
    end
75

    
76
    def test_copy
77
      response = self.class.extension_class.copy(RepositorySupport.repo_id, self.class.clone_name)
78

    
79
      tasks = assert_async_response(response)
80
      assert_includes tasks.first['tags'], 'pulp:action:associate'
81
    end
82
  end
83

    
84
  class TestDistributionUnassociate < UnitUnassociateBase
85
    def self.extension_class
86
      TestRuncible.server.extensions.distribution
87
    end
88

    
89
    def test_unassociate_ids_from_repo
90
      ids = content_ids(RepositorySupport.repo_id)
91
      refute_empty ids
92
      response = self.class.extension_class.unassociate_ids_from_repo(self.class.clone_name, [ids.first])
93

    
94
      assert_async_response(response)
95
      assert_equal((ids.length - 1), content_ids(self.class.clone_name).length)
96
    end
97

    
98
    def test_unassociate_unit_ids_from_repo
99
      ids = unit_ids(RepositorySupport.repo_id)
100
      refute_empty ids
101
      response = self.class.extension_class.unassociate_unit_ids_from_repo(self.class.clone_name, [ids.first])
102

    
103
      assert_async_response(response)
104
      assert_equal((ids.length - 1), unit_ids(self.class.clone_name).length)
105
    end
106

    
107
    def test_unassociate_from_repo
108
      ids = unit_ids(RepositorySupport.repo_id)
109
      refute_empty ids
110
      response = self.class.extension_class.unassociate_from_repo(self.class.clone_name,
111
                                                                :association => {'unit_id' => {'$in' => [ids.first]}})
112
      assert_async_response(response)
113
      assert_equal((ids.length - 1), unit_ids(self.class.clone_name).length)
114
    end
115
  end
116
end