Commit 19278530ba4df07db9e667ed0b809fc8494c1d5d
Committed by
João M. M. da Silva
1 parent
0a3af84e
Exists in
master
and in
23 other branches
[Mezuro] Completed metric configuration model, fixtures and tests.
Showing
3 changed files
with
62 additions
and
115 deletions
Show diff stats
plugins/mezuro/lib/kalibro/metric_configuration.rb
1 | class Kalibro::MetricConfiguration < Kalibro::Model | 1 | class Kalibro::MetricConfiguration < Kalibro::Model |
2 | 2 | ||
3 | - NATIVE_TYPE='native' | ||
4 | - COMPOUND_TYPE='compound' | ||
5 | - | ||
6 | - attr_accessor :metric, :code, :weight, :aggregation_form, :range, :configuration_name | 3 | + attr_accessor :id, :code, :metric, :base_tool_name, :weight, :aggregation_form, :reading_group_id, :configuration_id |
7 | 4 | ||
8 | def metric=(value) | 5 | def metric=(value) |
9 | - if value.kind_of?(Hash) | ||
10 | - @metric = native?(value) ? Kalibro::NativeMetric.to_object(value) : Kalibro::CompoundMetric.to_object(value) | ||
11 | - else | ||
12 | - @metric = value | ||
13 | - end | 6 | + @metric = Kalibro::Metric.to_object(value) |
14 | end | 7 | end |
15 | 8 | ||
16 | def weight=(value) | 9 | def weight=(value) |
17 | @weight = value.to_f | 10 | @weight = value.to_f |
18 | end | 11 | end |
19 | 12 | ||
20 | - def range=(value) | ||
21 | - @range = Kalibro::Range.to_objects_array value | ||
22 | - end | ||
23 | - | ||
24 | - def add_range(new_range) | ||
25 | - @range = [] if @range.nil? | ||
26 | - @range << new_range | ||
27 | - end | ||
28 | - | ||
29 | - def ranges | ||
30 | - @range | ||
31 | - end | ||
32 | - | ||
33 | - def ranges=(ranges) | ||
34 | - @range = ranges | ||
35 | - end | ||
36 | - | ||
37 | def update_attributes(attributes={}) | 13 | def update_attributes(attributes={}) |
38 | attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } | 14 | attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } |
39 | save | 15 | save |
40 | end | 16 | end |
41 | 17 | ||
42 | - def self.find_by_configuration_name_and_metric_name(configuration_name, metric_name) | ||
43 | - metric_configuration = new request("MetricConfiguration", :get_metric_configuration, { | ||
44 | - :configuration_name => configuration_name, | ||
45 | - :metric_name => metric_name | ||
46 | - })[:metric_configuration] | ||
47 | - metric_configuration.configuration_name = configuration_name | ||
48 | - metric_configuration | 18 | + def to_hash |
19 | + super :except => [:configuration_id] | ||
49 | end | 20 | end |
50 | 21 | ||
51 | - def destroy | ||
52 | - begin | ||
53 | - self.class.request("MetricConfiguration", :remove_metric_configuration, { | ||
54 | - :configuration_name => configuration_name, | ||
55 | - :metric_name=> metric.name | ||
56 | - }) | ||
57 | - rescue Exception => exception | ||
58 | - add_error exception | ||
59 | - end | ||
60 | - end | ||
61 | - | ||
62 | - def to_hash | ||
63 | - super :except => [:configuration_name] | 22 | + def self.metric_configurations_of(configuration_id) |
23 | + hash = request("MetricConfiguration", :metric_configurations_of, {:configuration_id => configuration_id}) | ||
24 | + hash[:metric_configuration].to_a.map { |metric_configuration| new metric_configuration } | ||
64 | end | 25 | end |
65 | 26 | ||
66 | private | 27 | private |
67 | 28 | ||
68 | - def native?(value) | ||
69 | - value.has_key?(:origin) ? true : false | ||
70 | - end | ||
71 | - | ||
72 | def save_params | 29 | def save_params |
73 | - {:metric_configuration => to_hash, :configuration_name => configuration_name} | 30 | + {:metric_configuration => self.to_hash, :configuration_id => self.configuration_id} |
74 | end | 31 | end |
75 | 32 | ||
76 | end | 33 | end |
plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb
1 | -require File.dirname(__FILE__) + '/compound_metric_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/native_metric_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/range_fixtures' | 1 | +require File.dirname(__FILE__) + '/metric_fixtures' |
4 | 2 | ||
5 | class MetricConfigurationFixtures | 3 | class MetricConfigurationFixtures |
6 | 4 | ||
7 | def self.amloc_metric_configuration | 5 | def self.amloc_metric_configuration |
8 | amloc = Kalibro::MetricConfiguration.new amloc_metric_configuration_hash | 6 | amloc = Kalibro::MetricConfiguration.new amloc_metric_configuration_hash |
9 | - amloc.configuration_name = "Sample Configuration" | ||
10 | - amloc | ||
11 | - end | ||
12 | - | ||
13 | - def self.metric_configuration_without_ranges | ||
14 | - amloc = Kalibro::MetricConfiguration.new | ||
15 | - { | ||
16 | - :metric => NativeMetricFixtures.amloc_hash, | ||
17 | - :code => 'amloc', | ||
18 | - :weight => 1.0, | ||
19 | - :aggregation_form => 'AVERAGE' | ||
20 | - } | ||
21 | - amloc.configuration_name = "Sample Configuration" | 7 | + amloc.configuration_id = 13 |
22 | amloc | 8 | amloc |
23 | end | 9 | end |
24 | 10 | ||
25 | def self.sc_metric_configuration | 11 | def self.sc_metric_configuration |
26 | sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash | 12 | sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash |
27 | - sc.configuration_name = "Sample Configuration" | 13 | + sc.configuration_id = 13 |
28 | sc | 14 | sc |
29 | end | 15 | end |
16 | + | ||
17 | + def self.created_metric_configuration | ||
18 | + Kalibro::MetricConfiguration.new({ | ||
19 | + :code => 'amloc', | ||
20 | + :metric => MetricFixtures.amloc_hash, | ||
21 | + :base_tool_name => MetricFixtures.amloc_hash[:origin], | ||
22 | + :weight => 1.0, | ||
23 | + :aggregation_form => 'AVERAGE', | ||
24 | + :reading_group_id => 31, | ||
25 | + :configuration_id => 13 | ||
26 | + }) | ||
27 | + end | ||
30 | 28 | ||
31 | def self.amloc_metric_configuration_hash | 29 | def self.amloc_metric_configuration_hash |
32 | - {:metric => NativeMetricFixtures.amloc_hash, :code => 'amloc', :weight => 1.0, | 30 | + { |
31 | + :id => 42, | ||
32 | + :code => 'amloc', | ||
33 | + :metric => MetricFixtures.amloc_hash, | ||
34 | + :base_tool_name => MetricFixtures.amloc_hash[:origin], | ||
35 | + :weight => 1.0, | ||
33 | :aggregation_form => 'AVERAGE', | 36 | :aggregation_form => 'AVERAGE', |
34 | - :range => [RangeFixtures.range_excellent_hash, RangeFixtures.range_bad_hash], | 37 | + :reading_group_id => 31, |
35 | :attributes! => {:metric => { | 38 | :attributes! => {:metric => { |
36 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | 39 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
37 | - 'xsi:type' => 'kalibro:nativeMetricXml' }}} | 40 | + 'xsi:type' => 'kalibro:metricXml' }} |
41 | + } | ||
38 | end | 42 | end |
39 | 43 | ||
40 | def self.sc_metric_configuration_hash | 44 | def self.sc_metric_configuration_hash |
41 | - {:metric => CompoundMetricFixtures.compound_metric_hash, :code => 'sc', :weight => 1.0, :aggregation_form => 'AVERAGE', | 45 | + { |
46 | + :id => 42, | ||
47 | + :code => 'sc', | ||
48 | + :metric => MetricFixtures.compound_metric_hash, | ||
49 | + :weight => 1.0, | ||
50 | + :aggregation_form => 'AVERAGE', | ||
51 | + :reading_group_id => 31, | ||
42 | :attributes! => {:metric => { | 52 | :attributes! => {:metric => { |
43 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | 53 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
44 | - 'xsi:type' => 'kalibro:compoundMetricXml' }}} | 54 | + 'xsi:type' => 'kalibro:metricXml' }} |
55 | + } | ||
45 | end | 56 | end |
46 | 57 | ||
47 | end | 58 | end |
plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb
1 | require "test_helper" | 1 | require "test_helper" |
2 | 2 | ||
3 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" | 3 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" |
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" | ||
5 | 4 | ||
6 | class MetricConfigurationTest < ActiveSupport::TestCase | 5 | class MetricConfigurationTest < ActiveSupport::TestCase |
7 | 6 | ||
8 | def setup | 7 | def setup |
9 | @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration | 8 | @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration |
10 | @native_metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash | 9 | @native_metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash |
11 | - @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration | ||
12 | - @metric_configuration_without_ranges = MetricConfigurationFixtures.metric_configuration_without_ranges | ||
13 | - @excellent_range = RangeFixtures.range_excellent | ||
14 | - @bad_range = RangeFixtures.range_bad | 10 | + @created_metric_configuration = MetricConfigurationFixtures.created_metric_configuration |
15 | end | 11 | end |
16 | 12 | ||
17 | should 'create metric configuration from hash' do | 13 | should 'create metric configuration from hash' do |
@@ -19,51 +15,34 @@ class MetricConfigurationTest < ActiveSupport::TestCase | @@ -19,51 +15,34 @@ class MetricConfigurationTest < ActiveSupport::TestCase | ||
19 | end | 15 | end |
20 | 16 | ||
21 | should 'convert metric configuration to hash' do | 17 | should 'convert metric configuration to hash' do |
22 | - assert_equal @native_metric_configuration_hash, @native_metric_configuration.to_hash() | 18 | + assert_equal @native_metric_configuration_hash, @native_metric_configuration.to_hash |
23 | end | 19 | end |
24 | 20 | ||
25 | - should 'create appropriate metric type' do | ||
26 | - assert @native_metric_configuration.metric.instance_of?(Kalibro::NativeMetric) | ||
27 | - assert @compound_metric_configuration.metric.instance_of?(Kalibro::CompoundMetric) | 21 | + should 'get all metric configurations of a configuration' do |
22 | + configuration_id = 13 | ||
23 | + request_body = { :configuration_id => configuration_id } | ||
24 | + response_hash = {:metric_configuration => [@native_metric_configuration_hash]} | ||
25 | + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :metric_configurations_of, request_body).returns(response_hash) | ||
26 | + assert_equal @native_metric_configuration.code, Kalibro::MetricConfiguration.metric_configurations_of(configuration_id).first.code | ||
28 | end | 27 | end |
29 | 28 | ||
30 | - should 'add a range to an empty range list' do | ||
31 | - @metric_configuration_without_ranges.add_range @excellent_range | ||
32 | - assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range] | ||
33 | - end | ||
34 | - | ||
35 | - should 'add a range to an non-empty range list' do | ||
36 | - @metric_configuration_without_ranges.ranges = [@excellent_range] | ||
37 | - @metric_configuration_without_ranges.add_range @bad_range | ||
38 | - assert_equal @metric_configuration_without_ranges.ranges, [@excellent_range, @bad_range] | ||
39 | - end | ||
40 | - | ||
41 | - should 'save metric configuration' do | ||
42 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
43 | - :metric_configuration => @native_metric_configuration_hash, | ||
44 | - :configuration_name => @native_metric_configuration.configuration_name | ||
45 | - }) | ||
46 | - @native_metric_configuration.save | 29 | + should 'return true when metric configuration is saved successfully' do |
30 | + id_from_kalibro = 1 | ||
31 | + configuration_id = @created_metric_configuration.configuration_id | ||
32 | + 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) | ||
33 | + assert @created_metric_configuration.save | ||
34 | + assert_equal id_from_kalibro, @created_metric_configuration.id | ||
47 | end | 35 | end |
48 | 36 | ||
49 | - should 'get metric configuration by name and configuration name' do | ||
50 | - request_body = { | ||
51 | - :configuration_name => @native_metric_configuration.configuration_name, | ||
52 | - :metric_name => @native_metric_configuration.metric.name | ||
53 | - } | ||
54 | - response_hash = {:metric_configuration => @native_metric_configuration_hash} | ||
55 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, request_body).returns(response_hash) | ||
56 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@native_metric_configuration.configuration_name, | ||
57 | - @native_metric_configuration.metric.name) | ||
58 | - assert_equal @native_metric_configuration.code, metric_configuration.code | 37 | + should 'return false when metric configuration is not saved successfully' do |
38 | + configuration_id = @created_metric_configuration.configuration_id | ||
39 | + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, {:metric_configuration => @created_metric_configuration.to_hash, :configuration_id => configuration_id}).raises(Exception.new) | ||
40 | + assert !(@created_metric_configuration.save) | ||
41 | + assert_nil @created_metric_configuration.id | ||
59 | end | 42 | end |
60 | 43 | ||
61 | - should 'destroy metric configuration by name' do | ||
62 | - request_body = { | ||
63 | - :configuration_name => @native_metric_configuration.configuration_name, | ||
64 | - :metric_name => @native_metric_configuration.metric.name | ||
65 | - } | ||
66 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :remove_metric_configuration, request_body) | 44 | + should 'destroy metric configuration' do |
45 | + Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :delete_metric_configuration, :metric_configuration_id => @native_metric_configuration.id) | ||
67 | @native_metric_configuration.destroy | 46 | @native_metric_configuration.destroy |
68 | end | 47 | end |
69 | 48 |