From 19278530ba4df07db9e667ed0b809fc8494c1d5d Mon Sep 17 00:00:00 2001 From: João M. M. da Silva + Paulo Meirelles Date: Wed, 7 Nov 2012 18:36:10 -0200 Subject: [PATCH] [Mezuro] Completed metric configuration model, fixtures and tests. --- plugins/mezuro/lib/kalibro/metric_configuration.rb | 59 ++++++++--------------------------------------------------- plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb | 55 +++++++++++++++++++++++++++++++++---------------------- plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb | 63 +++++++++++++++++++++------------------------------------------ 3 files changed, 62 insertions(+), 115 deletions(-) diff --git a/plugins/mezuro/lib/kalibro/metric_configuration.rb b/plugins/mezuro/lib/kalibro/metric_configuration.rb index cd76d93..464b6a4 100644 --- a/plugins/mezuro/lib/kalibro/metric_configuration.rb +++ b/plugins/mezuro/lib/kalibro/metric_configuration.rb @@ -1,76 +1,33 @@ class Kalibro::MetricConfiguration < Kalibro::Model - NATIVE_TYPE='native' - COMPOUND_TYPE='compound' - - attr_accessor :metric, :code, :weight, :aggregation_form, :range, :configuration_name + attr_accessor :id, :code, :metric, :base_tool_name, :weight, :aggregation_form, :reading_group_id, :configuration_id def metric=(value) - if value.kind_of?(Hash) - @metric = native?(value) ? Kalibro::NativeMetric.to_object(value) : Kalibro::CompoundMetric.to_object(value) - else - @metric = value - end + @metric = Kalibro::Metric.to_object(value) end def weight=(value) @weight = value.to_f end - def range=(value) - @range = Kalibro::Range.to_objects_array value - end - - def add_range(new_range) - @range = [] if @range.nil? - @range << new_range - end - - def ranges - @range - end - - def ranges=(ranges) - @range = ranges - end - def update_attributes(attributes={}) attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } save end - def self.find_by_configuration_name_and_metric_name(configuration_name, metric_name) - metric_configuration = new request("MetricConfiguration", :get_metric_configuration, { - :configuration_name => configuration_name, - :metric_name => metric_name - })[:metric_configuration] - metric_configuration.configuration_name = configuration_name - metric_configuration + def to_hash + super :except => [:configuration_id] end - def destroy - begin - self.class.request("MetricConfiguration", :remove_metric_configuration, { - :configuration_name => configuration_name, - :metric_name=> metric.name - }) - rescue Exception => exception - add_error exception - end - end - - def to_hash - super :except => [:configuration_name] + def self.metric_configurations_of(configuration_id) + hash = request("MetricConfiguration", :metric_configurations_of, {:configuration_id => configuration_id}) + hash[:metric_configuration].to_a.map { |metric_configuration| new metric_configuration } end private - def native?(value) - value.has_key?(:origin) ? true : false - end - def save_params - {:metric_configuration => to_hash, :configuration_name => configuration_name} + {:metric_configuration => self.to_hash, :configuration_id => self.configuration_id} end end diff --git a/plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb b/plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb index ed0f8cd..39ae3b0 100644 --- a/plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb +++ b/plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb @@ -1,47 +1,58 @@ -require File.dirname(__FILE__) + '/compound_metric_fixtures' -require File.dirname(__FILE__) + '/native_metric_fixtures' -require File.dirname(__FILE__) + '/range_fixtures' +require File.dirname(__FILE__) + '/metric_fixtures' class MetricConfigurationFixtures def self.amloc_metric_configuration amloc = Kalibro::MetricConfiguration.new amloc_metric_configuration_hash - amloc.configuration_name = "Sample Configuration" - amloc - end - - def self.metric_configuration_without_ranges - amloc = Kalibro::MetricConfiguration.new - { - :metric => NativeMetricFixtures.amloc_hash, - :code => 'amloc', - :weight => 1.0, - :aggregation_form => 'AVERAGE' - } - amloc.configuration_name = "Sample Configuration" + amloc.configuration_id = 13 amloc end def self.sc_metric_configuration sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash - sc.configuration_name = "Sample Configuration" + sc.configuration_id = 13 sc end + + def self.created_metric_configuration + Kalibro::MetricConfiguration.new({ + :code => 'amloc', + :metric => MetricFixtures.amloc_hash, + :base_tool_name => MetricFixtures.amloc_hash[:origin], + :weight => 1.0, + :aggregation_form => 'AVERAGE', + :reading_group_id => 31, + :configuration_id => 13 + }) + end def self.amloc_metric_configuration_hash - {:metric => NativeMetricFixtures.amloc_hash, :code => 'amloc', :weight => 1.0, + { + :id => 42, + :code => 'amloc', + :metric => MetricFixtures.amloc_hash, + :base_tool_name => MetricFixtures.amloc_hash[:origin], + :weight => 1.0, :aggregation_form => 'AVERAGE', - :range => [RangeFixtures.range_excellent_hash, RangeFixtures.range_bad_hash], + :reading_group_id => 31, :attributes! => {:metric => { 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:type' => 'kalibro:nativeMetricXml' }}} + 'xsi:type' => 'kalibro:metricXml' }} + } end def self.sc_metric_configuration_hash - {:metric => CompoundMetricFixtures.compound_metric_hash, :code => 'sc', :weight => 1.0, :aggregation_form => 'AVERAGE', + { + :id => 42, + :code => 'sc', + :metric => MetricFixtures.compound_metric_hash, + :weight => 1.0, + :aggregation_form => 'AVERAGE', + :reading_group_id => 31, :attributes! => {:metric => { 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:type' => 'kalibro:compoundMetricXml' }}} + 'xsi:type' => 'kalibro:metricXml' }} + } 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 f5c5a99..c22b92a 100644 --- a/plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb +++ b/plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb @@ -1,17 +1,13 @@ require "test_helper" require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" class MetricConfigurationTest < ActiveSupport::TestCase def setup @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration @native_metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash - @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration - @metric_configuration_without_ranges = MetricConfigurationFixtures.metric_configuration_without_ranges - @excellent_range = RangeFixtures.range_excellent - @bad_range = RangeFixtures.range_bad + @created_metric_configuration = MetricConfigurationFixtures.created_metric_configuration end should 'create metric configuration from hash' do @@ -19,51 +15,34 @@ class MetricConfigurationTest < ActiveSupport::TestCase end should 'convert metric configuration to hash' do - assert_equal @native_metric_configuration_hash, @native_metric_configuration.to_hash() + assert_equal @native_metric_configuration_hash, @native_metric_configuration.to_hash end - should 'create appropriate metric type' do - assert @native_metric_configuration.metric.instance_of?(Kalibro::NativeMetric) - assert @compound_metric_configuration.metric.instance_of?(Kalibro::CompoundMetric) + should 'get all metric configurations of a configuration' do + configuration_id = 13 + request_body = { :configuration_id => configuration_id } + response_hash = {:metric_configuration => [@native_metric_configuration_hash]} + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :metric_configurations_of, request_body).returns(response_hash) + assert_equal @native_metric_configuration.code, Kalibro::MetricConfiguration.metric_configurations_of(configuration_id).first.code end - should 'add a range to an empty range list' do - @metric_configuration_without_ranges.add_range @excellent_range - assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range] - end - - should 'add a range to an non-empty range list' do - @metric_configuration_without_ranges.ranges = [@excellent_range] - @metric_configuration_without_ranges.add_range @bad_range - assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range, @bad_range] - end - - should 'save metric configuration' do - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { - :metric_configuration => @native_metric_configuration_hash, - :configuration_name => @native_metric_configuration.configuration_name - }) - @native_metric_configuration.save + should 'return true when metric configuration is saved successfully' do + id_from_kalibro = 1 + configuration_id = @created_metric_configuration.configuration_id + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {:metric_configuration => @created_metric_configuration.to_hash, :configuration_id => configuration_id}).returns(:metric_configuration_id => id_from_kalibro) + assert @created_metric_configuration.save + assert_equal id_from_kalibro, @created_metric_configuration.id end - should 'get metric configuration by name and configuration name' do - request_body = { - :configuration_name => @native_metric_configuration.configuration_name, - :metric_name => @native_metric_configuration.metric.name - } - response_hash = {:metric_configuration => @native_metric_configuration_hash} - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, request_body).returns(response_hash) - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@native_metric_configuration.configuration_name, - @native_metric_configuration.metric.name) - assert_equal @native_metric_configuration.code, metric_configuration.code + should 'return false when metric configuration is not saved successfully' do + configuration_id = @created_metric_configuration.configuration_id + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {:metric_configuration => @created_metric_configuration.to_hash, :configuration_id => configuration_id}).raises(Exception.new) + assert !(@created_metric_configuration.save) + assert_nil @created_metric_configuration.id end - should 'destroy metric configuration by name' do - request_body = { - :configuration_name => @native_metric_configuration.configuration_name, - :metric_name => @native_metric_configuration.metric.name - } - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :remove_metric_configuration, request_body) + should 'destroy metric configuration' do + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :delete_metric_configuration, :metric_configuration_id => @native_metric_configuration.id) @native_metric_configuration.destroy end -- libgit2 0.21.2