Commit 70f57d8340ff506afc86dd02590f87616ca6325a
Committed by
João M. M. da Silva
1 parent
7ad294ee
Exists in
master
and in
22 other branches
[Mezuro] Fixing clone configuration feature and some refactoring
Showing
10 changed files
with
96 additions
and
93 deletions
Show diff stats
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 | ... | ... |