Commit 70f57d8340ff506afc86dd02590f87616ca6325a

Authored by João M. M. da Silva + Diego Araújo
Committed by João M. M. da Silva
1 parent 7ad294ee

[Mezuro] Fixing clone configuration feature and some refactoring

plugins/mezuro/lib/kalibro/configuration.rb
... ... @@ -19,24 +19,19 @@ class Kalibro::Configuration < Kalibro::Model
19 19 end
20 20  
21 21 def self.find_by_name(configuration_name)
22   - new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration]
23   - end
24   -
25   - def self.create(content, configuration)
26   - attributes = {
27   - :name => content.name,
28   - :description => content.description,
29   - :metric_configuration => configuration.to_hash[:metric_configuration]
30   - }
31   - super attributes
  22 + begin
  23 + new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration]
  24 + rescue Exception => error
  25 + nil
  26 + end
32 27 end
33 28  
34 29 def self.all_names
35   - request("Configuration", :get_configuration_names)[:configuration_name]
36   - end
37   -
38   - def destroy
39   - self.class.request("Configuration", :remove_configuration, {:configuration_name => name})
  30 + begin
  31 + request("Configuration", :get_configuration_names)[:configuration_name]
  32 + rescue Exception
  33 + []
  34 + end
40 35 end
41 36  
42 37 def update_attributes(attributes={})
... ... @@ -44,4 +39,7 @@ class Kalibro::Configuration < Kalibro::Model
44 39 save
45 40 end
46 41  
  42 + def metric_configurations_hash
  43 + self.to_hash[:metric_configuration]
  44 + end
47 45 end
... ...
plugins/mezuro/lib/kalibro/model.rb
... ... @@ -37,7 +37,9 @@ class Kalibro::Model
37 37 end
38 38  
39 39 def self.create(attributes={})
40   - new(attributes).save
  40 + new_model = new attributes
  41 + new_model.save
  42 + new_model
41 43 end
42 44  
43 45 def save
... ... @@ -49,6 +51,13 @@ class Kalibro::Model
49 51 end
50 52 end
51 53  
  54 + def destroy
  55 + begin
  56 + self.class.request(destroy_endpoint, destroy_action, destroy_params)
  57 + rescue Exception
  58 + end
  59 + end
  60 +
52 61 protected
53 62  
54 63 def fields
... ... @@ -101,4 +110,17 @@ class Kalibro::Model
101 110 def save_params
102 111 {class_name.underscore.to_sym => self.to_hash}
103 112 end
  113 +
  114 + def destroy_endpoint
  115 + class_name
  116 + end
  117 +
  118 + def destroy_action
  119 + "remove_#{class_name.underscore}".to_sym
  120 + end
  121 +
  122 + def destroy_params
  123 + {"#{class_name.underscore}_name".to_sym => self.name}
  124 + end
  125 +
104 126 end
... ...
plugins/mezuro/lib/kalibro/project.rb
... ... @@ -10,24 +10,6 @@ class Kalibro::Project < Kalibro::Model
10 10 new request("Project", :get_project, :project_name => project_name)[:project]
11 11 end
12 12  
13   - def self.create(content)
14   - attributes = {
15   - :name => content.name,
16   - :license => content.license,
17   - :description => content.description,
18   - :repository => {
19   - :type => content.repository_type,
20   - :address => content.repository_url
21   - },
22   - :configuration_name => content.configuration_name
23   - }
24   - super attributes
25   - end
26   -
27   - def destroy
28   - self.class.request("Project", :remove_project, {:project_name => name})
29   - end
30   -
31 13 def repository=(value)
32 14 @repository = Kalibro::Repository.to_object value
33 15 end
... ...
plugins/mezuro/lib/mezuro_plugin/configuration_content.rb
... ... @@ -19,12 +19,11 @@ class MezuroPlugin::ConfigurationContent < Article
19 19 end
20 20  
21 21 def configuration
22   - begin
23   - @configuration ||= Kalibro::Configuration.find_by_name(self.name)
24   - rescue Exception => error
25   - errors.add_to_base(error.message)
26   - nil
  22 + @configuration ||= Kalibro::Configuration.find_by_name(self.name)
  23 + if @configuration.nil?
  24 + errors.add_to_base("Kalibro Configuration not found")
27 25 end
  26 + @configuration
28 27 end
29 28  
30 29 def metric_configurations
... ... @@ -49,24 +48,35 @@ class MezuroPlugin::ConfigurationContent < Article
49 48 end
50 49  
51 50 def send_configuration_to_service
52   - if configuration.nil?
53   - begin
54   - clone_configuration = Kalibro::Configuration.find_by_name(self.clone_configuration_name)
55   - rescue Exception => error
56   - clone_configuration = nil
57   - end
58   - Kalibro::Configuration.create(self, clone_configuration)
59   - else
  51 + if editing_configuration?
60 52 configuration.update_attributes({:description => description})
  53 + else
  54 + create_kalibro_configuration
61 55 end
62 56 end
63 57  
64 58 def remove_configuration_from_service
65   - begin
66   - configuration.destroy
67   - rescue Exception => error
68   - errors.add_to_base(error.message)
  59 + configuration.destroy
  60 + end
  61 +
  62 + def create_kalibro_configuration
  63 + attributes = {:name => name, :description => description}
  64 + if cloning_configuration?
  65 + attributes[:metric_configuration] = configuration_to_clone.metric_configurations_hash
69 66 end
  67 + Kalibro::Configuration.create attributes
  68 + end
  69 +
  70 + def editing_configuration?
  71 + !configuration.nil?
  72 + end
  73 +
  74 + def configuration_to_clone
  75 + @configuration_to_clone ||= Kalibro::Configuration.find_by_name(self.clone_configuration_name)
  76 + end
  77 +
  78 + def cloning_configuration?
  79 + configuration_to_clone.nil?
70 80 end
71 81  
72 82 end
... ...
plugins/mezuro/lib/mezuro_plugin/project_content.rb
... ... @@ -87,20 +87,25 @@ Kalibro::ProjectResult.first_result_after(name, date)
87 87 end
88 88  
89 89 def send_project_to_service
90   - begin
91   - Kalibro::Project.create(self)
92   - project.process_project(periodicity_in_days)
93   - rescue Exception => error
94   - errors.add_to_base(error.message)
95   - end
  90 + created_project = create_kalibro_project
  91 + created_project.process_project(periodicity_in_days)
  92 + end
  93 +
  94 + def create_kalibro_project
  95 + Kalibro::Project.create(
  96 + :name => name,
  97 + :license => license,
  98 + :description => description,
  99 + :repository => {
  100 + :type => repository_type,
  101 + :address => repository_url
  102 + },
  103 + :configuration_name => configuration_name
  104 + )
96 105 end
97 106  
98 107 def destroy_project_from_service
99   - begin
100   - project.destroy
101   - rescue Exception => error
102   - errors.add_to_base(error.message)
103   - end
  108 + project.destroy
104 109 end
105 110  
106 111 end
... ...
plugins/mezuro/test/fixtures/configuration_fixtures.rb
... ... @@ -16,5 +16,13 @@ class ConfigurationFixtures
16 16 ]
17 17 }
18 18 end
  19 +
  20 + def self.configuration_content(clone_configuration)
  21 + MezuroPlugin::ConfigurationContent.new({
  22 + :name => 'Sample Configuration',
  23 + :description => 'Kalibro configuration for Java projects.',
  24 + :clone_configuration_name => clone_configuration
  25 + })
  26 + end
19 27  
20 28 end
... ...
plugins/mezuro/test/unit/kalibro/configuration_test.rb
... ... @@ -7,6 +7,7 @@ class ConfigurationTest < ActiveSupport::TestCase
7 7 def setup
8 8 @hash = ConfigurationFixtures.configuration_hash
9 9 @configuration = ConfigurationFixtures.configuration
  10 + @configuration_content = ConfigurationFixtures.configuration_content([])
10 11 end
11 12  
12 13 should 'initialize configuration' do
... ... @@ -26,7 +27,7 @@ class ConfigurationTest < ActiveSupport::TestCase
26 27 Kalibro::Configuration.expects(:request).with("Configuration", :save_configuration, {:configuration => @configuration.to_hash}).raises(Exception.new)
27 28 assert !(@configuration.save)
28 29 end
29   -
  30 +
30 31 should 'get all configuration names' do
31 32 names = ['Kalibro for Java', 'ConfigurationClientTest configuration']
32 33 Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration_names).returns({:configuration_name => names})
... ... @@ -40,19 +41,14 @@ class ConfigurationTest < ActiveSupport::TestCase
40 41 assert_equal @configuration.name, Kalibro::Configuration.find_by_name(@configuration.name).name
41 42 end
42 43  
43   - should 'raise error when configuration doesnt exist' do
  44 + should 'return nil when configuration doesnt exist' do
44 45 request_body = {:configuration_name => @configuration.name}
45 46 Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, request_body).raises(Exception.new)
46   - assert_raise Exception do Kalibro::Configuration.find_by_name(@configuration.name) end
  47 + assert_nil Kalibro::Configuration.find_by_name(@configuration.name)
47 48 end
48 49  
49 50 should 'destroy configuration by name' do
50 51 Kalibro::Configuration.expects(:request).with("Configuration", :remove_configuration, {:configuration_name => @configuration.name})
51 52 @configuration.destroy
52 53 end
53   -
54   - should 'raise error when try to destroy inexistent configuration from service' do
55   - Kalibro::Configuration.expects(:request).with("Configuration", :remove_configuration, {:configuration_name => @configuration.name}).raises(Exception.new)
56   - assert_raise Exception do @configuration.destroy end
57   - end
58 54 end
... ...
plugins/mezuro/test/unit/kalibro/project_test.rb
... ... @@ -44,11 +44,6 @@ class ProjectTest < ActiveSupport::TestCase
44 44 Kalibro::Project.expects(:request).with("Project", :remove_project, {:project_name => @project.name})
45 45 @project.destroy
46 46 end
47   -
48   - should 'raise error when try to remove inexistent project from service' do
49   - Kalibro::Project.expects(:request).with("Project", :remove_project, {:project_name => @project.name}).raises(Exception.new)
50   - assert_raise Exception do @project.destroy end
51   - end
52 47  
53 48 should 'initialize new project from hash' do
54 49 project = Kalibro::Project.new @hash
... ... @@ -56,21 +51,6 @@ class ProjectTest < ActiveSupport::TestCase
56 51 assert_equal @project.repository.type, project.repository.type
57 52 end
58 53  
59   - should 'create project' do
60   - project_hash = Kalibro::Project.new({
61   - :name => @project_content.name,
62   - :license => @project_content.license,
63   - :description => @project_content.description,
64   - :repository => {
65   - :type => @project_content.repository_type,
66   - :address => @project_content.repository_url
67   - },
68   - :configuration_name => @project_content.configuration_name
69   - }).to_hash
70   - Kalibro::Project.expects(:request).with("Project", :save_project, {:project => project_hash})
71   - Kalibro::Project.create @project_content
72   - end
73   -
74 54 should 'convert project to hash' do
75 55 hash = @project.to_hash
76 56 assert_equal @hash[:name], hash[:name]
... ...
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
... ... @@ -98,8 +98,10 @@ class ProjectContentTest < ActiveSupport::TestCase
98 98 end
99 99  
100 100 should 'send correct project to service' do
101   - Kalibro::Project.expects(:create).with(@content).returns(true)
102   - Kalibro::Project.expects(:find_by_name).with(@content.name).returns(@project)
  101 + hash = ProjectFixtures.project_hash
  102 + hash.delete(:attributes!)
  103 + hash.delete(:state)
  104 + Kalibro::Project.expects(:create).with(hash).returns(@project)
103 105 @project.expects(:process_project).with(@content.periodicity_in_days)
104 106 @content.send :send_project_to_service
105 107 end
... ...
plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb
... ... @@ -15,7 +15,7 @@
15 15  
16 16 <% configuration_names = @article.configuration_names %>
17 17  
18   -<% selected = (configuration.nil? ? configuration_names[0] : @article.clone_configuration_name) %>
  18 +<% selected = (configuration.nil? ? "None" : @article.clone_configuration_name) %>
19 19  
20 20 <%= required_fields_message %>
21 21  
... ...