Commit 70f57d8340ff506afc86dd02590f87616ca6325a
Committed by
João M. M. da Silva
1 parent
7ad294ee
Exists in
staging
and in
42 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 | ... | ... |