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/ %>
This Configuration doesn't exist on the Web Service.
<% if owner %> @@ -39,27 +38,27 @@