diff --git a/plugins/mezuro/lib/kalibro/base_tool.rb b/plugins/mezuro/lib/kalibro/base_tool.rb index e0b1838..4f1db1e 100644 --- a/plugins/mezuro/lib/kalibro/base_tool.rb +++ b/plugins/mezuro/lib/kalibro/base_tool.rb @@ -6,8 +6,8 @@ class Kalibro::BaseTool < Kalibro::Model request("BaseTool", :get_base_tool_names)[:base_tool_name].to_a end - def self.find_by_name(name) - new request("BaseTool", :get_base_tool, {:base_tool_name => name})[:base_tool] + def self.find_by_name(base_tool_name) + new request("BaseTool", :get_base_tool, {:base_tool_name => base_tool_name})[:base_tool] end def supported_metric=(value) diff --git a/plugins/mezuro/lib/kalibro/metric_configuration.rb b/plugins/mezuro/lib/kalibro/metric_configuration.rb index 1f9f93d..7b803bc 100644 --- a/plugins/mezuro/lib/kalibro/metric_configuration.rb +++ b/plugins/mezuro/lib/kalibro/metric_configuration.rb @@ -50,9 +50,14 @@ class Kalibro::MetricConfiguration < Kalibro::Model end def save + begin self.class.request("MetricConfiguration", :save_metric_configuration, { :metric_configuration => to_hash, :configuration_name => configuration_name}) + true + rescue Exception => error + false + end end def destroy diff --git a/plugins/mezuro/lib/kalibro/model.rb b/plugins/mezuro/lib/kalibro/model.rb index 74f6feb..3cb2db9 100644 --- a/plugins/mezuro/lib/kalibro/model.rb +++ b/plugins/mezuro/lib/kalibro/model.rb @@ -18,11 +18,7 @@ class Kalibro::Model end hash end - - def self.request(endpoint, action, request_body = nil) - response = client(endpoint).request(:kalibro, action) { soap.body = request_body } - response.to_hash["#{action}_response".to_sym] # response is a Savon::SOAP::Response, and to_hash is a Savon::SOAP::Response method - end + protected def fields @@ -55,6 +51,11 @@ class Kalibro::Model field.to_s[0] != '@' and field != :attributes! and (field.to_s =~ /xsi/).nil? end + def self.request(endpoint, action, request_body = nil) + response = client(endpoint).request(:kalibro, action) { soap.body = request_body } + response.to_hash["#{action}_response".to_sym] # response is a Savon::SOAP::Response, and to_hash is a Savon::SOAP::Response method + end + def to_objects_array(value, model_class = nil) array = value.kind_of?(Array) ? value : [value] array.each.collect { |element| to_object(element, model_class) } @@ -65,3 +66,4 @@ class Kalibro::Model end end + diff --git a/plugins/mezuro/test/fixtures/metric_result_fixtures.rb b/plugins/mezuro/test/fixtures/metric_result_fixtures.rb index 854880b..08b8c47 100644 --- a/plugins/mezuro/test/fixtures/metric_result_fixtures.rb +++ b/plugins/mezuro/test/fixtures/metric_result_fixtures.rb @@ -9,13 +9,13 @@ class MetricResultFixtures result.metric = NativeMetricFixtures.amloc result.value = 0.0 result.descendent_results = [40.0, 42.0] - result.range = RangeFixtures.amloc_excellent + result.range = RangeFixtures.range_excellent result end def self.sc_result result = Kalibro::Entities::MetricResult.new - result.metric = CompoundMetricFixtures.sc + result.metric = CompoundMetricFixtures.compound_metric result.value = 1.0 result.descendent_results = [2.0, 42.0] result @@ -23,14 +23,14 @@ class MetricResultFixtures def self.amloc_result_hash {:metric => NativeMetricFixtures.amloc_hash, :value => 0.0, :descendent_result => [40.0, 42.0], - :range => RangeFixtures.amloc_excellent_hash, + :range => RangeFixtures.range_excellent_hash, :attributes! => {:metric => { 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:type' => 'kalibro:nativeMetricXml' }}} end def self.sc_result_hash - {:metric => CompoundMetricFixtures.sc_hash, :value => 1.0, :descendent_result => [2.0, 42.0], + {:metric => CompoundMetricFixtures.compound_metric_hash, :value => 1.0, :descendent_result => [2.0, 42.0], :attributes! => {:metric => { 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:type' => 'kalibro:compoundMetricXml' }}} 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 80bacef..690060f 100644 --- a/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb +++ b/plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb @@ -14,80 +14,91 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase @response = ActionController::TestResponse.new @profile = fast_create(Community) - @base_tool = BaseToolFixtures.analizo - @base_tool_client = Kalibro::Client::BaseToolClient.new + @base_tool = BaseToolFixtures.base_tool @metric = NativeMetricFixtures.amloc - @metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new - @metric_configuration = MetricConfigurationFixtures.amloc_configuration - @compound_metric_configuration = MetricConfigurationFixtures.sc_configuration - @configuration = ConfigurationFixtures.kalibro_configuration + @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration + @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash + @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration + @configuration = ConfigurationFixtures.configuration end - - should 'assign configuration content in choose_base_tool' do - create_configuration_content - Kalibro::Client::BaseToolClient.expects(:base_tools).returns([]) + + should 'test choose_base_tool' do + create_configuration_content + Kalibro::BaseTool.expects(:all_names).returns(@base_tool.name) get :choose_base_tool, :profile => @profile.identifier, :id => @content.id - assert_equal assigns(:configuration_content), @content - end - - 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(@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_tools) assert_equal @content, assigns(:configuration_content) - assert_equal @base_tool.name, assigns(:base_tool) + assert_response 200 end - should 'get base_tool by name' do + should 'test choose_metric' do create_configuration_content - Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) - @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool) + Kalibro::BaseTool.expects(:find_by_name).with(@base_tool.name).returns(@base_tool) + @base_tool.expects(:supported_metrics).returns(@base_tool.supported_metric) 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) + assert_equal @base_tool.supported_metric, assigns(:supported_metrics) + assert_response 200 end - should 'get chosen native metric and configuration name' do + should 'test new_metric_configuration' do create_configuration_content - Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) - @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool) + Kalibro::BaseTool.expects(:find_by_name).with(@base_tool.name).returns(@base_tool) + @base_tool.expects(:metric).with(@metric.name).returns(@metric) 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) + assert_response 200 end - should 'call configuration client in new_compound_metric_configuration method' do + + should 'test new_compound_metric_configuration' do create_configuration_content - configuration_client = mock - Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client) - configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration) + Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) + @configuration.expects(:metric_configurations).returns(@configuration.metric_configuration) get :new_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id + assert_equal @content, assigns(:configuration_content) + assert_equal @configuration.metric_configuration, assigns(:metric_configurations) assert_response 200 end - should 'assign configuration name and get metric_configuration' do + should 'test edit_metric_configuration' do create_configuration_content - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) - @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric.name).returns(@metric_configuration) + Kalibro::MetricConfiguration.expects(:find_by_configuration_name_and_metric_name).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 + assert_equal @content, assigns(:configuration_content) + assert_equal @metric_configuration, assigns(:metric_configuration) + assert_equal @metric_configuration.metric, assigns(:metric) + assert_response 200 end - should 'test metric creation' do + should 'test edit_compound_metric_configuration' 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, :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 }} + Kalibro::MetricConfiguration.expects(:find_by_configuration_name_and_metric_name).with(@configuration.name, @metric.name).returns(@compound_metric_configuration) + Kalibro::Configuration.expects(:find_by_name).with(@content.name).returns(@configuration) + @configuration.expects(:metric_configurations).returns(@configuration.metric_configuration) + get :edit_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name + assert_equal @content, assigns(:configuration_content) + assert_equal @compound_metric_configuration, assigns(:metric_configuration) + assert_equal @compound_metric_configuration.metric, assigns(:metric) + assert_equal @configuration.metric_configuration, assigns(:metric_configurations) + assert_response 200 + end + + should 'test create_metric_configuration' do + create_configuration_content + @metric_configuration.expects(:save).returns(true) + MezuroPlugin::ConfigurationContent.expects(:validate_kalibro_configuration_name).returns(true) + MezuroPlugin::ConfigurationContent.expects(:send_configuration_to_service).returns(true) + get :create_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => @metric_configuration_hash assert_response 302 end +=begin should 'test compound metric creation' do create_configuration_content - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:save) get :create_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight, @@ -99,7 +110,7 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase should 'test metric edition' do create_configuration_content - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) @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 @@ -108,8 +119,8 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase 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) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) + Kalibro::Configuration.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, :id => @content.id, :metric_name => @metric.name @@ -118,8 +129,8 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase 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) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.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, :id => @content.id, @@ -130,8 +141,8 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase 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) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.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, :id => @content.id, @@ -151,33 +162,31 @@ class MezuroPluginMyprofileControllerTest < ActionController::TestCase should 'create instance range' do create_configuration_content - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.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 }, :id => @content.id, :metric_name => @metric.name - assert assigns(:range).instance_of?(Kalibro::Entities::Range) + assert assigns(:range).instance_of?(Kalibro::Range) end should 'redirect from remove metric configuration' do create_configuration_content - Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) + Kalibro::MetricConfiguration.expects(:new).returns(@metric_configuration_client) @metric_configuration_client.expects(:remove) get :remove_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name assert_response 302 end private +=end def create_configuration_content - client = mock - Kalibro::Client::ConfigurationClient.expects(:new).returns(client) - client.expects(:configuration_names).returns([]) + Kalibro::Configuration.expects(:all_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/kalibro/metric_configuration_test.rb b/plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb index b840fa0..bf05db8 100644 --- a/plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb +++ b/plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb @@ -53,7 +53,7 @@ class MetricConfigurationTest < ActiveSupport::TestCase } response_hash = {:metric_configuration => @metric_configuration1.to_hash} Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, request_body).returns(response_hash) - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_and_metric(@metric_configuration1.configuration_name, + metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@metric_configuration1.configuration_name, @metric_configuration1.metric.name) assert_equal @metric_configuration1.code, metric_configuration.code end -- libgit2 0.21.2