From 3517cb28604a266e2a9060f7dbd32c25ad65ca8f Mon Sep 17 00:00:00 2001 From: Paulo Meirelles Date: Sat, 7 Jul 2012 00:06:57 +0400 Subject: [PATCH] [Mezuro] Refactoring configuration (myprofile) controller, clients, and validations --- plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------ plugins/mezuro/lib/kalibro/client/base_tool_client.rb | 12 ++++++++++++ plugins/mezuro/lib/kalibro/client/configuration_client.rb | 13 +++++++++++-- plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb | 6 +++++- plugins/mezuro/lib/kalibro/entities/metric_configuration.rb | 3 +++ plugins/mezuro/lib/mezuro_plugin/configuration_content.rb | 19 +++++++++++++++++-- plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb | 40 ---------------------------------------- plugins/mezuro/public/javascripts/validations.js | 17 +++++++++++++---- plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------- plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb | 44 -------------------------------------------- 10 files changed, 177 insertions(+), 192 deletions(-) delete mode 100644 plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb delete mode 100644 plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb diff --git a/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb index b3e58d9..5f090fa 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb @@ -4,123 +4,119 @@ class MezuroPluginMyprofileController < ProfileController def choose_base_tool - @configuration_name = params[:configuration_name] - @tool_names = Kalibro::Client::BaseToolClient.new + @configuration_content = profile.articles.find(params[:id]) + @base_tools = Kalibro::Client::BaseToolClient.base_tools end def choose_metric - @configuration_name = params[:configuration_name] - @collector_name = params[:collector_name] - @collector = Kalibro::Client::BaseToolClient.new.base_tool(@collector_name) + @configuration_content = profile.articles.find(params[:id]) + @base_tool = params[:base_tool] + @supported_metrics = Kalibro::Client::BaseToolClient.metrics @base_tool end def new_metric_configuration - metric_name = params[:metric_name] - collector_name = params[:collector_name] - collector = Kalibro::Client::BaseToolClient.new.base_tool(collector_name) - @metric = collector.supported_metrics.find {|metric| metric.name == metric_name} - @configuration_name = params[:configuration_name] + @configuration_content = profile.articles.find(params[:id]) + @metric = Kalibro::Client::BaseToolClient.metric params[:metric_name], params[:base_tool] end def new_compound_metric_configuration - @configuration_name = params[:configuration_name] - @metric_configurations = Kalibro::Client::ConfigurationClient.new.configuration(@configuration_name).metric_configurations + @configuration_content = profile.articles.find(params[:id]) + @metric_configurations = @configuration_content.metric_configurations end def edit_metric_configuration - metric_name = params[:metric_name] - @configuration_name = params[:configuration_name] - @metric_configuration = Kalibro::Client::MetricConfigurationClient.new.metric_configuration(@configuration_name, metric_name) + @configuration_content = profile.articles.find(params[:id]) + @metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, params[:metric_name]) @metric = @metric_configuration.metric end def edit_compound_metric_configuration - metric_name = params[:metric_name] - @configuration_name = params[:configuration_name] - @metric_configuration = Kalibro::Client::MetricConfigurationClient.new.metric_configuration(@configuration_name, metric_name) - @metric_configurations = Kalibro::Client::ConfigurationClient.new.configuration(@configuration_name).metric_configurations + @configuration_content = profile.articles.find(params[:id]) + @metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, params[:metric_name]) + @metric_configurations = @configuration_content.metric_configurations @metric = @metric_configuration.metric end def create_metric_configuration - metric_name = generic_metric_configuration_creation(new_metric_configuration_instance) - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?configuration_name=#{@configuration_name.gsub(/\s/, '+')}&metric_name=#{metric_name.gsub(/\s/, '+')}" + configuration_content = profile.articles.find(params[:id]) + metric_name = generic_metric_configuration_creation(new_metric_configuration_instance, configuration_content.name) + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{metric_name.gsub(/\s/, '+')}" end def create_compound_metric_configuration - metric_name = generic_metric_configuration_creation(new_compound_metric_configuration_instance) - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?configuration_name=#{@configuration_name.gsub(/\s/, '+')}&metric_name=#{metric_name.gsub(/\s/, '+')}" + configuration_content = profile.articles.find(params[:id]) + metric_name = generic_metric_configuration_creation(new_compound_metric_configuration_instance, configuration_content.name) + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{metric_name.gsub(/\s/, '+')}" end def update_metric_configuration - auxiliar_update_metric_configuration(MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE) - redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}" + @configuration_content = profile.articles.find(params[:id]) + auxiliar_update_metric_configuration(Kalibro::Entities::MetricConfiguration::NATIVE_TYPE) + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" end def update_compound_metric_configuration - auxiliar_update_metric_configuration(MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE) - redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}" + @configuration_content = profile.articles.find(params[:id]) + auxiliar_update_metric_configuration(Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE) + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" end def new_range + @configuration_content = profile.articles.find(params[:id]) @metric_name = params[:metric_name] - @configuration_name = params[:configuration_name] end def edit_range + @configuration_content = profile.articles.find(params[:id]) @metric_name = params[:metric_name] - @configuration_name = params[:configuration_name] @beginning_id = params[:beginning_id] - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - metric_configuration = metric_configuration_client.metric_configuration(@configuration_name, @metric_name) + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, @metric_name) @range = metric_configuration.ranges.find{ |range| range.beginning == @beginning_id.to_f } end def create_range + @configuration_content = profile.articles.find(params[:id]) @range = new_range_instance - configuration_name = params[:configuration_name] metric_name = params[:metric_name] beginning_id = params[:beginning_id] - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) + + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, metric_name) metric_configuration.add_range(@range) - metric_configuration_client.save(metric_configuration, configuration_name) + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_content.name) end def update_range + configuration_content = profile.articles.find(params[:id]) metric_name = params[:metric_name] - configuration_name = params[:configuration_name] beginning_id = params[:beginning_id] - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(configuration_content.name, metric_name) index = metric_configuration.ranges.index{ |range| range.beginning == beginning_id.to_f } metric_configuration.ranges[index] = new_range_instance - Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name) + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_content.name) end def remove_range - configuration_name = params[:configuration_name] + configuration_content = profile.articles.find(params[:id]) metric_name = params[:metric_name] beginning_id = params[:range_beginning] - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) + + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(configuration_content.name, metric_name) metric_configuration.ranges.delete_if { |range| range.beginning == beginning_id.to_f }.inspect Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name) - formatted_configuration_name = configuration_name.gsub(/\s/, '+') formatted_metric_name = metric_name.gsub(/\s/, '+') if metric_configuration.metric.class == Kalibro::Entities::CompoundMetric - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?configuration_name=#{formatted_configuration_name}&metric_name=#{formatted_metric_name}" + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" else - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?configuration_name=#{formatted_configuration_name}&metric_name=#{formatted_metric_name}" + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" end end def remove_metric_configuration - configuration_name = params[:configuration_name] + configuration_content = profile.articles.find(params[:id]) metric_name = params[:metric_name] - Kalibro::Client::MetricConfigurationClient.new.remove(configuration_name, metric_name) - redirect_to "/#{profile.identifier}/#{configuration_name.downcase.gsub(/\s/, '-')}" + Kalibro::Client::MetricConfigurationClient.new.remove(configuration_content.name, metric_name) + redirect_to "/#{profile.identifier}/#{configuration_content.slug}" end private @@ -128,16 +124,16 @@ class MezuroPluginMyprofileController < ProfileController def new_metric_configuration_instance metric_configuration = Kalibro::Entities::MetricConfiguration.new metric_configuration.metric = Kalibro::Entities::NativeMetric.new - assign_metric_configuration_instance(metric_configuration, MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE) + assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::NATIVE_TYPE) end def new_compound_metric_configuration_instance metric_configuration = Kalibro::Entities::MetricConfiguration.new metric_configuration.metric = Kalibro::Entities::CompoundMetric.new - assign_metric_configuration_instance(metric_configuration, MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE) + assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE) end - def assign_metric_configuration_instance(metric_configuration, type=MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE) + def assign_metric_configuration_instance(metric_configuration, type=Kalibro::Entities::MetricConfiguration::NATIVE_TYPE) metric_configuration.metric.name = params[:metric_configuration][:metric][:name] metric_configuration.metric.description = params[:metric_configuration][:metric][:description] metric_configuration.metric.scope = params[:metric_configuration][:metric][:scope] @@ -145,28 +141,25 @@ class MezuroPluginMyprofileController < ProfileController metric_configuration.weight = params[:metric_configuration][:weight] metric_configuration.aggregation_form = params[:metric_configuration][:aggregation_form] - if type == MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE + if type == Kalibro::Entities::MetricConfiguration::NATIVE_TYPE metric_configuration.metric.origin = params[:metric_configuration][:metric][:origin] metric_configuration.metric.language = params[:metric_configuration][:metric][:language] - elsif type == MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE + elsif type == Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE metric_configuration.metric.script = params[:metric_configuration][:metric][:script] end metric_configuration end - def generic_metric_configuration_creation(metric_configuration) - @configuration_name = params[:configuration_name] - Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_name) + def generic_metric_configuration_creation(metric_configuration, configuration_name) + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name) metric_configuration.metric.name end def auxiliar_update_metric_configuration(type) - @configuration_name = params[:configuration_name] metric_name = params[:metric_configuration][:metric][:name] - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - metric_configuration = metric_configuration_client.metric_configuration(@configuration_name, metric_name) + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, metric_name) metric_configuration = assign_metric_configuration_instance(metric_configuration, type) - metric_configuration_client.save(metric_configuration, @configuration_name) + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_content.name) end def new_range_instance diff --git a/plugins/mezuro/lib/kalibro/client/base_tool_client.rb b/plugins/mezuro/lib/kalibro/client/base_tool_client.rb index b9fbfbe..c2240b6 100644 --- a/plugins/mezuro/lib/kalibro/client/base_tool_client.rb +++ b/plugins/mezuro/lib/kalibro/client/base_tool_client.rb @@ -1,5 +1,17 @@ class Kalibro::Client::BaseToolClient + def self.base_tools + new.base_tool_names + end + + def self.metrics(base_tool) + new.base_tool(base_tool).supported_metrics + end + + def self.metric(metric_name, base_tool) + metrics(base_tool).find {|metric| metric.name == metric_name} + end + def initialize @port = Kalibro::Client::Port.new('BaseTool') end diff --git a/plugins/mezuro/lib/kalibro/client/configuration_client.rb b/plugins/mezuro/lib/kalibro/client/configuration_client.rb index 1bd56cc..e215587 100644 --- a/plugins/mezuro/lib/kalibro/client/configuration_client.rb +++ b/plugins/mezuro/lib/kalibro/client/configuration_client.rb @@ -1,8 +1,17 @@ class Kalibro::Client::ConfigurationClient + def self.configuration(configuration_name) + new.configuration(configuration_name) + end + def self.save(configuration_content) - configuration = Kalibro::Entities::Configuration.new - configuration.name = configuration_content.name + begin + configuration = new.configuration(configuration_content.name) + rescue + configuration = Kalibro::Entities::Configuration.new + configuration.name = configuration_content.name + end + configuration.description = configuration_content.description new.save(configuration) end diff --git a/plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb b/plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb index 59c5149..740c769 100644 --- a/plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb +++ b/plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb @@ -1,5 +1,9 @@ class Kalibro::Client::MetricConfigurationClient + def self.metric_configuration(configuration_name, metric_name) + new.metric_configuration(configuration_name, metric_name) + end + def initialize @port = Kalibro::Client::Port.new('MetricConfiguration') end @@ -25,4 +29,4 @@ class Kalibro::Client::MetricConfigurationClient }) end -end \ No newline at end of file +end diff --git a/plugins/mezuro/lib/kalibro/entities/metric_configuration.rb b/plugins/mezuro/lib/kalibro/entities/metric_configuration.rb index 468d2b2..8c2e32a 100644 --- a/plugins/mezuro/lib/kalibro/entities/metric_configuration.rb +++ b/plugins/mezuro/lib/kalibro/entities/metric_configuration.rb @@ -1,5 +1,8 @@ class Kalibro::Entities::MetricConfiguration < Kalibro::Entities::Entity + NATIVE_TYPE='native' + COMPOUND_TYPE='compound' + attr_accessor :metric, :code, :weight, :aggregation_form, :range def metric=(value) diff --git a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb index c153e55..09a7117 100644 --- a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb @@ -1,4 +1,5 @@ class MezuroPlugin::ConfigurationContent < Article + validate_on_create :validate_kalibro_configuration_name def self.short_description 'Kalibro configuration' @@ -8,7 +9,7 @@ class MezuroPlugin::ConfigurationContent < Article 'Sets of thresholds to interpret metrics' end - settings_items :description, :metrics + settings_items :description include ActionView::Helpers::TagHelper def to_html(options = {}) @@ -17,15 +18,29 @@ class MezuroPlugin::ConfigurationContent < Article end end - def configuration #FIXME invalid method name + def configuration Kalibro::Client::ConfigurationClient.configuration(name) end + + def metric_configurations + configuration.metric_configurations + end + after_save :send_configuration_to_service after_destroy :remove_configuration_from_service private + def validate_kalibro_configuration_name + existing = Kalibro::Client::ConfigurationClient.new.configuration_names + existing.each { |a| a.downcase!} + + if existing.include?(name.downcase) + errors.add_to_base("Configuration name already exists in Kalibro") + end + end + def send_configuration_to_service Kalibro::Client::ConfigurationClient.save(self) end diff --git a/plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb b/plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb deleted file mode 100644 index 30f3f74..0000000 --- a/plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb +++ /dev/null @@ -1,40 +0,0 @@ -class MezuroPlugin::MetricConfigurationContent < Article - - NATIVE_TYPE='native' - COMPOUND_TYPE='compound' - - def self.short_description - 'Kalibro Configurated Metric' - end - - def self.description - 'Sets of thresholds to interpret a metric' - end - - settings_items :description, :code, :weight, :scope, :aggregation_form, :range - - include ActionView::Helpers::TagHelper - def to_html(options = {}) - lambda do - render :file => 'content_viewer/show_configuration.rhtml' - end - end - - def metric_configuration #FIXME invalid method name - Kalibro::Client::MetricConfigurationClient.metric_configuration(name) - end - - after_save :send_metric_configuration_to_service - after_destroy :remove_metric_configuration_from_service - - private - - def send_metric_configuration_to_service - Kalibro::Client::MetricConfigurationClient.save(self) - end - - def remove_metric_configuration_from_service - Kalibro::Client::MetricConfigurationClient.remove(name) - end - -end diff --git a/plugins/mezuro/public/javascripts/validations.js b/plugins/mezuro/public/javascripts/validations.js index 7800c7b..d811625 100644 --- a/plugins/mezuro/public/javascripts/validations.js +++ b/plugins/mezuro/public/javascripts/validations.js @@ -30,8 +30,15 @@ function IsNotNumeric(value){ return true; } +function IsNotInfinite(value){ + if(value.match(/INF/)){ + return false; + } + return true; +} + function IsNotHexadecimal(value){ - if(value.match(/[0-9a-fA-F]{1,8}/)) + if(value.match(/^[0-9a-fA-F]{1,8}$/)) { return false; } @@ -50,15 +57,17 @@ function validate_new_range_configuration(event){ alert("Please fill all fields marked with (*)"); return false; } - if (IsNotNumeric(beginning) || IsNotNumeric(end) || IsNotNumeric(grade)) + if ( (IsNotNumeric(beginning) && IsNotInfinite(beginning)) || (IsNotNumeric(end) && IsNotInfinite(end)) || IsNotNumeric(grade)) { alert("Beginning, End and Grade must be numeric values"); return false; } if (parseInt(beginning) > parseInt(end)) { - alert("End must be greater than Beginning"); - return false; + if(IsNotInfinite(beginning) && IsNotInfinite(end)){ + alert("End must be greater than Beginning"); + return false; + } } if (IsNotHexadecimal(color)){ alert("Color must be an hexadecimal value"); diff --git a/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb b/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb index fecd9fe..80bacef 100644 --- a/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb +++ b/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb @@ -14,7 +14,7 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase @response = ActionController::TestResponse.new @profile = fast_create(Community) - @collector = BaseToolFixtures.analizo + @base_tool = BaseToolFixtures.analizo @base_tool_client = Kalibro::Client::BaseToolClient.new @metric = NativeMetricFixtures.amloc @metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new @@ -23,70 +23,73 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase @configuration = ConfigurationFixtures.kalibro_configuration end - should 'assign configuration name in choose_base_tool' do - get :choose_base_tool, :profile => @profile.identifier, :configuration_name => "test name" - assert_equal assigns(:configuration_name), "test name" + should 'assign configuration content in choose_base_tool' do + create_configuration_content + Kalibro::Client::BaseToolClient.expects(:base_tools).returns([]) + get :choose_base_tool, :profile => @profile.identifier, :id => @content.id + assert_equal assigns(:configuration_content), @content end - should 'create base tool client' do - get :choose_base_tool, :profile => @profile.identifier, :configuration_name => "test name" - assert assigns(:tool_names).instance_of?(Kalibro::Client::BaseToolClient) - end - - should 'assign configuration and collector name in choose_metric' do + should 'assign configuration and base_tool name in choose_metric' do + create_configuration_content Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector) - get :choose_metric, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo" - assert_equal assigns(:configuration_name), "test name" - assert_equal assigns(:collector_name), "Analizo" + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool) + get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name + assert_equal @content, assigns(:configuration_content) + assert_equal @base_tool.name, assigns(:base_tool) end - should 'get collector by name' do + should 'get base_tool by name' do + create_configuration_content Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector) - get :choose_metric, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo" - assert_equal assigns(:collector), @collector + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool) + get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name + assert_equal @base_tool.name, assigns(:base_tool) end should 'get chosen native metric and configuration name' do + create_configuration_content Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector) - get :new_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo", :metric_name => @metric.name - assert_equal assigns(:configuration_name), "test name" - assert_equal assigns(:metric), @metric + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool) + get :new_metric_configuration, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name, :metric_name => @metric.name + assert_equal @content, assigns(:configuration_content) + assert_equal @metric, assigns(:metric) end should 'call configuration client in new_compound_metric_configuration method' do + create_configuration_content configuration_client = mock Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client) configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration) - get :new_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name + get :new_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id assert_response 200 end should 'assign configuration name and get metric_configuration' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) - @metric_configuration_client.expects(:metric_configuration).with("test name", @metric.name).returns(@metric_configuration) - get :edit_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name - assert_equal assigns(:configuration_name), "test name" + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric.name).returns(@metric_configuration) + get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name + assert_equal assigns(:configuration_content), @content assert_equal assigns(:metric_configuration), @metric_configuration assert_equal assigns(:metric), @metric_configuration.metric end should 'test metric creation' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:save) - get :create_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", + get :create_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.code, :aggregation => @metric_configuration.aggregation_form, :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }} - assert_equal assigns(:configuration_name), "test name" assert_response 302 end should 'test compound metric creation' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:save) - get :create_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", + get :create_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight, :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name , :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope, @@ -95,37 +98,43 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase end should 'test metric edition' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) - @metric_configuration_client.expects(:metric_configuration).with("test name","test metric name").returns(@metric_configuration) - get :edit_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => "test metric name" + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name,@metric.name).returns(@metric_configuration) + get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name assert_response 200 end should 'test compound metric edition' do + create_configuration_content configuration_client = mock Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client) configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration) @metric_configuration_client.expects(:metric_configuration).with(@configuration.name,@metric.name).returns(@compound_metric_configuration) - get :edit_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, :metric_name => @metric.name + get :edit_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name assert_response 200 end should 'update metric configuration' do + create_configuration_content + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric_configuration.metric.name).returns(@metric_configuration) @metric_configuration_client.expects(:save) - get :update_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, + get :update_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.weight, :aggregation => @metric_configuration.aggregation_form, :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }} assert_response 302 end should 'update compound metric configuration' do + create_configuration_content + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @compound_metric_configuration.metric.name).returns(@compound_metric_configuration) @metric_configuration_client.expects(:save) - get :update_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, + get :update_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight, :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name , :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope, @@ -134,26 +143,41 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase end should 'assign configuration name and metric name to new range' do - get :new_range, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name - assert_equal assigns(:configuration_name), "test name" + create_configuration_content + get :new_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name + assert_equal assigns(:configuration_content), @content assert_equal assigns(:metric_name), @metric.name end should 'create instance range' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) - @metric_configuration_client.expects(:metric_configuration).with("test name", @metric.name).returns(@metric_configuration) + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric.name).returns(@metric_configuration) @metric_configuration_client.expects(:save) range = @metric_configuration.ranges[0] get :create_range, :profile => @profile.identifier, :range => { :beginning => range.beginning, :end => range.end, :label => range.label, - :grade => range.grade, :color => range.color, :comments => range.comments }, :configuration_name => "test name", :metric_name => @metric.name + :grade => range.grade, :color => range.color, :comments => range.comments }, :id => @content.id, :metric_name => @metric.name assert assigns(:range).instance_of?(Kalibro::Entities::Range) end should 'redirect from remove metric configuration' do + create_configuration_content Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:remove) - get :remove_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name + get :remove_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name assert_response 302 end + + private + + def create_configuration_content + client = mock + Kalibro::Client::ConfigurationClient.expects(:new).returns(client) + client.expects(:configuration_names).returns([]) + @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name) + @content.expects(:send_configuration_to_service).returns(nil) + @content.save + end end diff --git a/plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb b/plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb deleted file mode 100644 index 0e0515c..0000000 --- a/plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb +++ /dev/null @@ -1,44 +0,0 @@ -require "test_helper" - -class MetricConfigurationContentTest < ActiveSupport::TestCase - - def setup - @metric_configuration = MezuroPlugin::MetricConfigurationContent.new - end - - should 'be a metric configuration' do - assert_kind_of Article, @metric_configuration - end - - should 'have short description' do - assert_equal 'Kalibro Configurated Metric', MezuroPlugin::MetricConfigurationContent.short_description - end - - should 'have description' do - assert_equal 'Sets of thresholds to interpret a metric', MezuroPlugin::MetricConfigurationContent.description - end - - should 'have an html view' do - assert_not_nil @metric_configuration.to_html - end - - #should 'return metric configuration' do - # pending "Need refactoring" - #end - - should 'send metric configuration to service after saving' do - @metric_configuration.expects :send_metric_configuration_to_service - @metric_configuration.run_callbacks :after_save - end - - should 'send correct metric configuration to service' do - Kalibro::Client::MetricConfigurationClient.expects(:save).with(@metric_configuration) - @metric_configuration.send :send_metric_configuration_to_service - end - - should 'remove metric configuration from service' do - Kalibro::Client::MetricConfigurationClient.expects(:remove).with(@metric_configuration.name) - @metric_configuration.send :remove_metric_configuration_from_service - end - -end -- libgit2 0.21.2