Commit a9432a0d8cd7bfd65433eb1b3aee078c5a7e6eae
Committed by
Paulo Meireles
1 parent
d0564075
Exists in
master
and in
29 other branches
[Mezuro] Refactoring Kalibro Client to Kalibro Model
Showing
9 changed files
with
79 additions
and
108 deletions
Show diff stats
plugins/mezuro/lib/kalibro/client/kalibro_client.rb
... | ... | @@ -1,39 +0,0 @@ |
1 | -class Kalibro::Client::KalibroClient | |
2 | - | |
3 | - def self.process_project(project_name) | |
4 | - new.process_project(project_name) | |
5 | - end | |
6 | - | |
7 | - def initialize | |
8 | - @port = Kalibro::Client::Port.new('Kalibro') | |
9 | - end | |
10 | - | |
11 | - def supported_repository_types | |
12 | - @port.request(:get_supported_repository_types)[:repository_type].to_a | |
13 | - end | |
14 | - | |
15 | - def process_project(project_name) | |
16 | - @port.request(:process_project, {:project_name => project_name}) | |
17 | - end | |
18 | - | |
19 | - def self.process_project(project_name, days) | |
20 | - if days.to_i.zero? | |
21 | - new.process_project(project_name) | |
22 | - else | |
23 | - new.process_periodically(project_name, days) | |
24 | - end | |
25 | - end | |
26 | - | |
27 | - def process_periodically(project_name, period_in_days) | |
28 | - @port.request(:process_periodically, {:project_name => project_name, :period_in_days => period_in_days}) | |
29 | - end | |
30 | - | |
31 | - def process_period(project_name) | |
32 | - @port.request(:get_process_period, {:project_name => project_name})[:period] | |
33 | - end | |
34 | - | |
35 | - def cancel_periodic_process(project_name) | |
36 | - @port.request(:cancel_periodic_process, {:project_name => project_name}) | |
37 | - end | |
38 | - | |
39 | -end |
... | ... | @@ -0,0 +1,22 @@ |
1 | +class Kalibro::Kalibro < Kalibro::Model | |
2 | + | |
3 | + def self.repository_types | |
4 | + request("Kalibro", :get_supported_repository_types)[:repository_type].to_a | |
5 | + end | |
6 | + | |
7 | + def self.process_project(project_name, days = '0') | |
8 | + if days.to_i.zero? | |
9 | + request("Kalibro", :process_project, {:project_name => project_name}) | |
10 | + else | |
11 | + request("Kalibro", :process_periodically, {:project_name => project_name, :period_in_days => days}) | |
12 | + end | |
13 | + end | |
14 | + | |
15 | + def self.process_period(project_name) | |
16 | + request("Kalibro", :get_process_period, {:project_name => project_name})[:period] | |
17 | + end | |
18 | + | |
19 | + def self.cancel_periodic_process(project_name) | |
20 | + request("Kalibro", :cancel_periodic_process, {:project_name => project_name}) | |
21 | + end | |
22 | +end | ... | ... |
plugins/mezuro/lib/kalibro/model.rb
... | ... | @@ -38,4 +38,14 @@ class Kalibro::Model |
38 | 38 | xml_name + "Xml" |
39 | 39 | end |
40 | 40 | |
41 | + def self.client(endpoint) | |
42 | + service_address = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/service.yaml") | |
43 | + Savon::Client.new("#{service_address}#{endpoint}Endpoint/?wsdl") | |
44 | + end | |
45 | + | |
46 | + def self.request(endpoint, action, request_body = nil) | |
47 | + response = client(endpoint).request(:kalibro, action) { soap.body = request_body } | |
48 | + response.to_hash["#{action}_response".to_sym] | |
49 | + end | |
50 | + | |
41 | 51 | end | ... | ... |
plugins/mezuro/lib/kalibro/project.rb
... | ... | @@ -3,12 +3,12 @@ class Kalibro::Project < Kalibro::Model |
3 | 3 | attr_accessor :name, :license, :description, :repository, :configuration_name, :state, :error |
4 | 4 | |
5 | 5 | def self.all_names |
6 | - request(:get_project_names)[:project_name] | |
6 | + request("Project", :get_project_names)[:project_name] | |
7 | 7 | end |
8 | 8 | |
9 | 9 | def self.find_by_name(project_name) |
10 | 10 | begin |
11 | - attributes = request(:get_project, :project_name => project_name)[:project] | |
11 | + attributes = request("Project", :get_project, :project_name => project_name)[:project] | |
12 | 12 | new attributes |
13 | 13 | rescue Exception => error |
14 | 14 | nil |
... | ... | @@ -16,7 +16,7 @@ class Kalibro::Project < Kalibro::Model |
16 | 16 | end |
17 | 17 | |
18 | 18 | def self.destroy(project_name) |
19 | - request(:remove_project, {:project_name => project_name}) | |
19 | + request("Project", :remove_project, {:project_name => project_name}) | |
20 | 20 | end |
21 | 21 | |
22 | 22 | def self.create (content) |
... | ... | @@ -34,7 +34,7 @@ class Kalibro::Project < Kalibro::Model |
34 | 34 | |
35 | 35 | def save |
36 | 36 | begin |
37 | - self.class.request(:save_project, {:project => to_hash}) | |
37 | + self.class.request("Project", :save_project, {:project => to_hash}) | |
38 | 38 | true |
39 | 39 | rescue Exception => error |
40 | 40 | false |
... | ... | @@ -45,18 +45,5 @@ class Kalibro::Project < Kalibro::Model |
45 | 45 | @repository = (value.kind_of?(Hash)) ? Kalibro::Repository.new(value) : value |
46 | 46 | end |
47 | 47 | |
48 | - private | |
49 | - | |
50 | - def self.client | |
51 | - endpoint = "Project" | |
52 | - service_address = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/service.yaml") | |
53 | - Savon::Client.new("#{service_address}#{endpoint}Endpoint/?wsdl") | |
54 | - end | |
55 | - | |
56 | - def self.request(action, request_body = nil) | |
57 | - response = client.request(:kalibro, action) { soap.body = request_body } | |
58 | - response.to_hash["#{action}_response".to_sym] | |
59 | - end | |
60 | - | |
61 | 48 | end |
62 | 49 | ... | ... |
plugins/mezuro/lib/mezuro_plugin/project_content.rb
... | ... | @@ -80,7 +80,7 @@ client.first_result_after(name, date) |
80 | 80 | def send_project_to_service |
81 | 81 | begin |
82 | 82 | Kalibro::Project.create(self).save |
83 | - Kalibro::Client::KalibroClient.process_project(name, periodicity_in_days) | |
83 | + Kalibro::Kalibro.process_project(name, periodicity_in_days) | |
84 | 84 | rescue Exception => error |
85 | 85 | errors.add_to_base(error.message) |
86 | 86 | end | ... | ... |
plugins/mezuro/test/unit/kalibro/client/kalibro_client_test.rb
... | ... | @@ -1,43 +0,0 @@ |
1 | -require "test_helper" | |
2 | - | |
3 | -class KalibroClientTest < ActiveSupport::TestCase | |
4 | - | |
5 | - def setup | |
6 | - @port = mock | |
7 | - Kalibro::Client::Port.expects(:new).with('Kalibro').returns(@port) | |
8 | - @client = Kalibro::Client::KalibroClient.new | |
9 | - end | |
10 | - | |
11 | - should 'get supported repository types' do | |
12 | - types = ['BAZAAR', 'GIT', 'SUBVERSION'] | |
13 | - @port.expects(:request).with(:get_supported_repository_types).returns({:repository_type => types}) | |
14 | - assert_equal types, @client.supported_repository_types | |
15 | - end | |
16 | - | |
17 | - should 'process project' do | |
18 | - name = 'KalibroClientTest' | |
19 | - @port.expects(:request).with(:process_project, {:project_name => name}) | |
20 | - @client.process_project(name) | |
21 | - end | |
22 | - | |
23 | - should 'instantiate for processing project' do | |
24 | - instance = mock | |
25 | - Kalibro::Client::KalibroClient.expects(:new).returns(instance) | |
26 | - instance.expects(:process_project).with('myproject') | |
27 | - Kalibro::Client::KalibroClient.process_project('myproject', 0) | |
28 | - end | |
29 | - | |
30 | - should 'process project with periodicity' do | |
31 | - name = 'KalibroClientTest' | |
32 | - @port.expects(:request).with(:process_periodically, {:project_name => name, :period_in_days => 30}) | |
33 | - @client.process_periodically(name, 30) | |
34 | - end | |
35 | - | |
36 | - should 'instantiate for processing project periodically' do | |
37 | - instance = mock | |
38 | - Kalibro::Client::KalibroClient.expects(:new).returns(instance) | |
39 | - instance.expects(:process_periodically).with('myproject', 30) | |
40 | - Kalibro::Client::KalibroClient.process_project('myproject', 30) | |
41 | - end | |
42 | - | |
43 | -end |
... | ... | @@ -0,0 +1,34 @@ |
1 | +require "test_helper" | |
2 | + | |
3 | +class KalibroClientTest < ActiveSupport::TestCase | |
4 | + | |
5 | + def setup | |
6 | + @name = 'KalibroTest' | |
7 | + end | |
8 | + | |
9 | + should 'get supported repository types' do | |
10 | + types = ['BAZAAR', 'GIT', 'SUBVERSION'] | |
11 | + Kalibro::Kalibro.expects(:request).with('Kalibro', :get_supported_repository_types).returns({:repository_type => types}) | |
12 | + assert_equal types, Kalibro::Kalibro.repository_types | |
13 | + end | |
14 | + | |
15 | + should 'process project without days' do | |
16 | + Kalibro::Kalibro.expects(:request).with('Kalibro', :process_project, {:project_name => @name}) | |
17 | + Kalibro::Kalibro.process_project(@name) | |
18 | + end | |
19 | + | |
20 | + should 'process project with days' do | |
21 | + Kalibro::Kalibro.expects(:request).with('Kalibro', :process_periodically, {:project_name => @name, :period_in_days => "1"}) | |
22 | + Kalibro::Kalibro.process_project(@name, "1") | |
23 | + end | |
24 | + | |
25 | + should 'process period' do | |
26 | + Kalibro::Kalibro.expects(:request).with('Kalibro', :get_process_period, {:project_name => @name}).returns({:period => "1"}) | |
27 | + assert_equal "1", Kalibro::Kalibro.process_period(@name) | |
28 | + end | |
29 | + | |
30 | + should 'cancel periodic process' do | |
31 | + Kalibro::Kalibro.expects(:request).with("Kalibro", :cancel_periodic_process, {:project_name => @name}) | |
32 | + Kalibro::Kalibro.cancel_periodic_process(@name) | |
33 | + end | |
34 | +end | ... | ... |
plugins/mezuro/test/unit/kalibro/project_test.rb
... | ... | @@ -12,7 +12,7 @@ class ProjectTest < ActiveSupport::TestCase |
12 | 12 | |
13 | 13 | should 'get all project names' do |
14 | 14 | response_hash = {:project_name => [@project.name]} |
15 | - Kalibro::Project.expects(:request).with(:get_project_names).returns(response_hash) | |
15 | + Kalibro::Project.expects(:request).with("Project", :get_project_names).returns(response_hash) | |
16 | 16 | assert_equal response_hash[:project_name], Kalibro::Project.all_names |
17 | 17 | end |
18 | 18 | |
... | ... | @@ -20,33 +20,33 @@ class ProjectTest < ActiveSupport::TestCase |
20 | 20 | request_body = {:project_name => @project.name} |
21 | 21 | response_hash = {:project => @hash} |
22 | 22 | Kalibro::Project.expects(:new).with(@hash).returns(@project) |
23 | - Kalibro::Project.expects(:request).with(:get_project, request_body).returns(response_hash) | |
23 | + Kalibro::Project.expects(:request).with("Project", :get_project, request_body).returns(response_hash) | |
24 | 24 | assert_equal @project, Kalibro::Project.find_by_name(@project.name) |
25 | 25 | end |
26 | 26 | |
27 | 27 | should 'raise error when project doesnt exist' do |
28 | 28 | request_body = {:project_name => @project.name} |
29 | - Kalibro::Project.expects(:request).with(:get_project, request_body).raises(Exception.new("(S:Server) There is no project named " + @project.name)) | |
29 | + Kalibro::Project.expects(:request).with("Project", :get_project, request_body).raises(Exception.new("(S:Server) There is no project named " + @project.name)) | |
30 | 30 | assert_nil Kalibro::Project.find_by_name(@project.name) |
31 | 31 | end |
32 | 32 | |
33 | 33 | should 'return true when project is saved successfully' do |
34 | - Kalibro::Project.expects(:request).with(:save_project, {:project => @project.to_hash}) | |
34 | + Kalibro::Project.expects(:request).with("Project", :save_project, {:project => @project.to_hash}) | |
35 | 35 | assert @project.save |
36 | 36 | end |
37 | 37 | |
38 | 38 | should 'return false when project is not saved successfully' do |
39 | - Kalibro::Project.expects(:request).with(:save_project, {:project => @project.to_hash}).raises(Exception.new) | |
39 | + Kalibro::Project.expects(:request).with("Project", :save_project, {:project => @project.to_hash}).raises(Exception.new) | |
40 | 40 | assert !(@project.save) |
41 | 41 | end |
42 | 42 | |
43 | 43 | should 'remove existent project from service' do |
44 | - Kalibro::Project.expects(:request).with(:remove_project, {:project_name => @project.name}) | |
44 | + Kalibro::Project.expects(:request).with("Project", :remove_project, {:project_name => @project.name}) | |
45 | 45 | Kalibro::Project.destroy(@project.name) |
46 | 46 | end |
47 | 47 | |
48 | 48 | should 'raise error when try to remove inexistent project from service' do |
49 | - Kalibro::Project.expects(:request).with(:remove_project, {:project_name => @project.name}).raises(Exception.new) | |
49 | + Kalibro::Project.expects(:request).with("Project", :remove_project, {:project_name => @project.name}).raises(Exception.new) | |
50 | 50 | assert_raise Exception do Kalibro::Project.destroy(@project.name) end |
51 | 51 | end |
52 | 52 | ... | ... |
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
... | ... | @@ -96,7 +96,7 @@ returns(module_result) |
96 | 96 | project = mock |
97 | 97 | Kalibro::Project.expects(:create).with(@content).returns(project) |
98 | 98 | project.expects(:save).returns(true) |
99 | - Kalibro::Client::KalibroClient.expects(:process_project).with(@content.name, @content.periodicity_in_days) | |
99 | + Kalibro::Kalibro.expects(:process_project).with(@content.name, @content.periodicity_in_days) | |
100 | 100 | @content.send :send_project_to_service |
101 | 101 | end |
102 | 102 | ... | ... |