Commit a9432a0d8cd7bfd65433eb1b3aee078c5a7e6eae

Authored by Diego Camarinha
Committed by Paulo Meireles
1 parent d0564075

[Mezuro] Refactoring Kalibro Client to Kalibro Model

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
plugins/mezuro/lib/kalibro/kalibro.rb 0 → 100644
... ... @@ -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 &lt; 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 &lt; 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 &lt; 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 &lt; 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
plugins/mezuro/test/unit/kalibro/kalibro_test.rb 0 → 100644
... ... @@ -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 &lt; 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 &lt; 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  
... ...