diff --git a/plugins/mezuro/lib/kalibro/configuration.rb b/plugins/mezuro/lib/kalibro/configuration.rb index d5aea2f..c8207d6 100644 --- a/plugins/mezuro/lib/kalibro/configuration.rb +++ b/plugins/mezuro/lib/kalibro/configuration.rb @@ -1,7 +1,11 @@ class Kalibro::Configuration < Kalibro::Model attr_accessor :id, :name, :description - + + def id=(value) + @id = value.to_i + end + def self.configuration_of(repository_id) new request(:configuration_of, {:repository_id => repository_id})[:configuration] end @@ -13,10 +17,4 @@ class Kalibro::Configuration < Kalibro::Model response.map {|configuration| new configuration} end - - def update_attributes(attributes={}) - attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } - save - end - end diff --git a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb index d79bcae..9959903 100644 --- a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb @@ -1,17 +1,17 @@ class MezuroPlugin::ConfigurationContent < Article - validate_on_create :validate_kalibro_configuration_name + validate_on_create :validate_configuration_name - settings_items :kalibro_id, :description, :configuration_to_clone_name + settings_items :configuration_id - after_save :send_kalibro_configuration_to_service - after_destroy :remove_kalibro_configuration_from_service + before_save :send_configuration_to_service + after_destroy :remove_configuration_from_service def self.short_description 'Mezuro configuration' end def self.description - 'Sets of thresholds to interpret metrics' + 'Set of metric configurations to interpret a Kalibro project' end include ActionView::Helpers::TagHelper @@ -21,25 +21,21 @@ class MezuroPlugin::ConfigurationContent < Article end end - def kalibro_configuration + def kalibro_configuration #Can't be just "configuration", method name exists somewhere in noosfero begin - @kalibro_configuration ||= Kalibro::Configuration.find(self.kalibro_id) + @configuration ||= Kalibro::Configuration.find(self.configuration_id) rescue Exception => exception errors.add_to_base(exception.message) end - @kalibro_configuration + @configuration end -# def metric_configurations -# kalibro_configuration.metric_configurations -# end - - def kalibro_configuration_names_and_ids + def configuration_names_and_ids all_names_and_ids = {} begin all_configurations = Kalibro::Configuration.all - if(!all_configurations.nil?) - all_configuration.each do |configuration| + if(!all_configurations.empty?) + all_configurations.each do |configuration| all_names_and_ids[configuration.id] = configuration.name end end @@ -50,40 +46,63 @@ class MezuroPlugin::ConfigurationContent < Article all_names_and_ids end + def description=(value) + @description=value + end + + def description + begin + @description ||= kalibro_configuration.description + rescue + @description = "" + end + @description + end + + def metric_configurations + begin + @metric_configurations ||= Kalibro::MetricConfiguration.metric_configurations_of(configuration_id) + rescue Exception => error + errors.add_to_base(error.message) + @metric_configurations = [] + end + @metric_configurations + end + + def metric_configurations=(value) + @metric_configurations = value.kind_of?(Array) ? value : [value] + @metric_configurations = @metric_configurations.map { |element| to_metric_configuration(element) } + end + private - def validate_kalibro_configuration_name - existing = kalibro_configuration_names.map { |a| a.downcase} + def self.to_metric_configuration value + value.kind_of?(Hash) ? Kalibro::MetricConfiguration.new(value) : value + end + + def validate_configuration_name + existing = configuration_names_and_ids.values.map { |a| a.downcase} if existing.include?(name.downcase) errors.add_to_base("Configuration name already exists in Kalibro") end end - def send_kalibro_configuration_to_service - if editing_kalibro_configuration? - kalibro_configuration.update_attributes({:description => description}) - else - create_kalibro_configuration - end + def send_configuration_to_service + attributes = {:id => configuration_id, :name => name, :description => description} +# if cloning_configuration? +# attributes[:metric_configuration] = configuration_to_clone.metric_configurations_hash +# end + created_configuration = Kalibro::Configuration.create attributes + self.configuration_id = created_configuration.id end - def remove_kalibro_configuration_from_service + def remove_configuration_from_service + puts "aqui tem #{@configuration.inspect}" kalibro_configuration.destroy unless kalibro_configuration.nil? end - def create_kalibro_configuration - attributes = {:name => name, :description => description} - if cloning_kalibro_configuration? - attributes[:metric_configuration] = configuration_to_clone.metric_configurations_hash - end - Kalibro::Configuration.create attributes - end - - def editing_kalibro_configuration? - kalibro_configuration.present? - end - +=begin def configuration_to_clone @configuration_to_clone ||= find_configuration_to_clone end @@ -92,8 +111,9 @@ class MezuroPlugin::ConfigurationContent < Article (configuration_to_clone_name == "None") ? nil : Kalibro::Configuration.find_by_name(configuration_to_clone_name) end - def cloning_kalibro_configuration? + def cloning_configuration? configuration_to_clone.present? end +=end end diff --git a/plugins/mezuro/lib/mezuro_plugin/project_content.rb b/plugins/mezuro/lib/mezuro_plugin/project_content.rb index b9bd3e8..d36e341 100644 --- a/plugins/mezuro/lib/mezuro_plugin/project_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/project_content.rb @@ -3,6 +3,9 @@ class MezuroPlugin::ProjectContent < Article settings_items :project_id + before_save :send_project_to_service + after_destroy :destroy_project_from_service + def self.short_description 'Mezuro project' end @@ -54,9 +57,6 @@ class MezuroPlugin::ProjectContent < Article @repositories = @repositories.map { |element| to_repository(element) } end - before_save :send_project_to_service - after_destroy :destroy_project_from_service - private def self.to_repository value diff --git a/plugins/mezuro/lib/mezuro_plugin/reading_group_content.rb b/plugins/mezuro/lib/mezuro_plugin/reading_group_content.rb index 6785b75..18b46c2 100644 --- a/plugins/mezuro/lib/mezuro_plugin/reading_group_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/reading_group_content.rb @@ -3,6 +3,9 @@ class MezuroPlugin::ReadingGroupContent < Article settings_items :reading_group_id + before_save :send_reading_group_to_service + after_destroy :destroy_reading_group_from_service + def self.short_description 'Mezuro reading group' end @@ -54,9 +57,6 @@ class MezuroPlugin::ReadingGroupContent < Article @readings = @readings.map { |element| to_reading(element) } end - before_save :send_reading_group_to_service - after_destroy :destroy_reading_group_from_service - private def self.to_reading value diff --git a/plugins/mezuro/test/fixtures/configuration_content_fixtures.rb b/plugins/mezuro/test/fixtures/configuration_content_fixtures.rb new file mode 100644 index 0000000..1ab33e9 --- /dev/null +++ b/plugins/mezuro/test/fixtures/configuration_content_fixtures.rb @@ -0,0 +1,23 @@ +class ConfigurationContentFixtures + + def self.configuration_content + MezuroPlugin::ConfigurationContent.new configuration_content_hash + end + + def self.created_configuration_content + MezuroPlugin::ConfigurationContent.new( { + :name => 'Sample Configuration', + :description => 'Kalibro configuration for Java projects.', + :configuration_id => nil + } ) + end + + def self.configuration_content_hash + { + :name => 'Sample Configuration', + :description => 'Kalibro configuration for Java projects.', + :configuration_id => "42" + } + end + +end diff --git a/plugins/mezuro/test/fixtures/configuration_fixtures.rb b/plugins/mezuro/test/fixtures/configuration_fixtures.rb index 1c5c220..39f7b68 100644 --- a/plugins/mezuro/test/fixtures/configuration_fixtures.rb +++ b/plugins/mezuro/test/fixtures/configuration_fixtures.rb @@ -21,16 +21,8 @@ class ConfigurationFixtures } end - def self.configuration_content(clone_configuration) - MezuroPlugin::ConfigurationContent.new({ - :name => 'Sample Configuration', - :description => 'Kalibro configuration for Java projects.', - :configuration_to_clone_name => clone_configuration - }) + def self.all + [configuration] end -def self.all - [configuration] -end - end diff --git a/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb b/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb index 15a5df8..e776928 100644 --- a/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb +++ b/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb @@ -1,12 +1,17 @@ require "test_helper" require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_content_fixtures" class ConfigurationContentTest < ActiveSupport::TestCase def setup @configuration = ConfigurationFixtures.configuration - @content = ConfigurationFixtures.configuration_content("None") + @content = ConfigurationContentFixtures.configuration_content + @created_configuration = ConfigurationFixtures.created_configuration + @content_hash = ConfigurationContentFixtures.configuration_content_hash + @configuration_hash = {:name => @content_hash[:name], :description => @content_hash[:description], :id => @content_hash[:configuration_id]} + @created_content = ConfigurationContentFixtures.created_configuration_content end should 'be an article' do @@ -18,7 +23,7 @@ class ConfigurationContentTest < ActiveSupport::TestCase end should 'provide proper description' do - assert_equal 'Sets of thresholds to interpret metrics', MezuroPlugin::ConfigurationContent.description + assert_equal 'Set of metric configurations to interpret a Kalibro project', MezuroPlugin::ConfigurationContent.description end should 'have an html view' do @@ -26,52 +31,55 @@ class ConfigurationContentTest < ActiveSupport::TestCase end should 'not save a configuration with an existing cofiguration name in kalibro' do - Kalibro::Configuration.expects(:all_names).returns([@content.name.upcase]) - @content.send :validate_kalibro_configuration_name + Kalibro::Configuration.expects(:all).returns([@configuration]) + @content.send :validate_configuration_name assert_equal "Configuration name already exists in Kalibro", @content.errors.on_base end should 'get configuration from service' do - Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) - assert_equal @configuration, @content.kalibro_configuration + Kalibro::Configuration.expects(:find).with(@content.configuration_id).returns(@configuration) + assert_equal @configuration, @content.configuration end should 'send configuration to service after saving' do - @content.expects :send_kalibro_configuration_to_service + @content.expects :send_configuration_to_service @content.stubs(:solr_save) @content.run_callbacks :after_save end should 'create new configuration' do - Kalibro::Configuration.expects(:create).with(:name => @content.name, :description => @content.description) - Kalibro::Configuration.expects(:find_by_name).with(@content.name) - @content.send :send_kalibro_configuration_to_service + Kalibro::Configuration.expects(:create).with(:name => @created_content.name, :description => @created_content.description, :id => nil).returns(@configuration) + @created_content.send :send_configuration_to_service + assert_equal @configuration.id, @created_content.configuration_id end - + +=begin should 'clone configuration' do @content.configuration_to_clone_name = 'clone name' - Kalibro::Configuration.expects(:create).with(:name => @content.name, :description => @content.description, :metric_configuration => @configuration.metric_configurations_hash) - Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(nil) - Kalibro::Configuration.expects(:find_by_name).with('clone name').returns(@configuration) - @content.send :send_kalibro_configuration_to_service + Kalibro::Configuration.expects(:create).with(:name => @content.configuration_id, :description => @content.description, :metric_configuration => @configuration.metric_configurations_hash) + Kalibro::Configuration.expects(:find).with(@content.configuration_id).returns(nil) + Kalibro::Configuration.expects(:find).with('clone name').returns(@configuration) + @content.send :send_configuration_to_service end +=end should 'edit configuration' do - Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) - @configuration.expects(:update_attributes).with(:description => @content.description) - @content.send :send_kalibro_configuration_to_service + Kalibro::Configuration.expects(:new).with(@configuration_hash).returns(@configuration) + @configuration.expects(:save).returns(true) + @content.send :send_configuration_to_service + assert_equal @configuration.id, @content.configuration_id end should 'send correct configuration to service but comunication fails' do - Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) - @configuration.expects(:save).returns(false) - @content.send :send_kalibro_configuration_to_service + Kalibro::Configuration.expects(:new).with(@configuration_hash).returns(@created_configuration) + @created_configuration.expects(:save).returns(false) + @content.send :send_configuration_to_service end should 'remove configuration from service' do - Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) + Kalibro::Configuration.expects(:find).with(@content.configuration_id).returns(@configuration) @configuration.expects(:destroy) - @content.send :remove_kalibro_configuration_from_service + @content.send :remove_configuration_from_service end end diff --git a/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb b/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb index 4635a56..554d9c7 100644 --- a/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb +++ b/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb @@ -2,7 +2,7 @@ <% kalibro_configuration = @article.title.nil? ? nil : @article.kalibro_configuration - kalibro_configuration_names = @article.kalibro_configuration_names + kalibro_configuration_names = @article.configuration_names_and_ids.values %> <%= error_messages_for 'kalibro_configuration' %> @@ -10,19 +10,23 @@ <%= hidden_field_tag 'kalibro_configuration[profile_id]', profile.id %> <%= hidden_field_tag 'id', @article.id %> - -<% selected = (kalibro_configuration.nil? ? "None" : @article.configuration_to_clone_name) %> +<% # selected = (kalibro_configuration.nil? ? "None" : @article.configuration_to_clone_name) + %> <%= required_fields_message %> -<%= required labelled_form_field _('Clone Configuration'), +<% +=begin +required labelled_form_field _('Clone Configuration'), if !kalibro_configuration.nil? && !@article.id.nil? f.select(:configuration_to_clone_name, kalibro_configuration_names, {:selected => selected}, :disabled => 'true') else f.select(:configuration_to_clone_name, kalibro_configuration_names, {:selected => selected}) -end %> +end +=end +%>
-<%= required f.text_field(:name, :disabled => !(kalibro_configuration.nil? || @article.id.nil?)) %> +<%= required f.text_field(:name) %> <%= f.text_field :description %>
diff --git a/plugins/mezuro/views/content_viewer/show_configuration.rhtml b/plugins/mezuro/views/content_viewer/show_configuration.rhtml index 5013dbd..3cc4788 100644 --- a/plugins/mezuro/views/content_viewer/show_configuration.rhtml +++ b/plugins/mezuro/views/content_viewer/show_configuration.rhtml @@ -1,9 +1,8 @@ <% @configuration_content = @page @kalibro_configuration = @page.kalibro_configuration %> <% owner = (not user.nil?) && user.id == @profile.id %> - <% unless @page.errors[:base].nil? %> - <% if @page.errors[:base] =~ /There is no configuration named/ %> + <% if @page.errors[:base] =~ /Kalibro::Errors::RecordNotFound/ %>

Warning:

This Configuration doesn't exist on the Web Service.

<% if owner %> @@ -39,27 +38,27 @@
Metric Name
Collector Name
Metric Code
+
Weight
+
Aggregation Form
- <% @kalibro_configuration.metric_configurations.each do |metric_configuration| %> + <% @configuration_content.metric_configurations.each do |metric_configuration| %> - <% if metric_configuration.metric.instance_of? Kalibro::NativeMetric %> <%= link_to metric_configuration.metric.name, :controller => "mezuro_plugin_metric_configuration", :action => "edit_metric_configuration", - :metric_name => metric_configuration.metric.name, :id => @configuration_content.id, + :metric_configuration_id => metric_configuration.id, :id => @configuration_content.id, :profile => @page.profile.identifier %> + <% if metric_configuration.metric.compound %> - <%= metric_configuration.metric.origin %> + Compound Metric - <%= metric_configuration.code %> <% else %> - <%= link_to metric_configuration.metric.name, :controller => "mezuro_plugin_metric_configuration", - :action => "edit_compound_metric_configuration", :metric_name => metric_configuration.metric.name, - :id => @configuration_content.id, :profile => @page.profile.identifier %> - Compound Metric + <%= metric_configuration.metric.origin %> - <%= metric_configuration.code %> <% end %> + <%= metric_configuration.code %> + <%= metric_configuration.weight %> + <%= metric_configuration.aggreafation_form %> <% if owner %> <%= link_to "Remove", :controller => "mezuro_plugin_metric_configuration", :action => "remove_metric_configuration", :metric_name => metric_configuration.metric.name, :id => @configuration_content.id, -- libgit2 0.21.2