Commit 4110f11de28302ec170da3ee9c18b466cc9430b3
Committed by
João M. M. da Silva
1 parent
243f282d
Exists in
master
and in
8 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 | 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 | 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 | 7 | end |
15 | 8 | |
16 | 9 | def weight=(value) |
17 | 10 | @weight = value.to_f |
18 | 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 | 13 | def update_attributes(attributes={}) |
38 | 14 | attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } |
39 | 15 | save |
40 | 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 | 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 | 25 | end |
65 | 26 | |
66 | 27 | private |
67 | 28 | |
68 | - def native?(value) | |
69 | - value.has_key?(:origin) ? true : false | |
70 | - end | |
71 | - | |
72 | 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 | 31 | end |
75 | 32 | |
76 | 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 | 3 | class MetricConfigurationFixtures |
6 | 4 | |
7 | 5 | def self.amloc_metric_configuration |
8 | 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 | 8 | amloc |
23 | 9 | end |
24 | 10 | |
25 | 11 | def self.sc_metric_configuration |
26 | 12 | sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash |
27 | - sc.configuration_name = "Sample Configuration" | |
13 | + sc.configuration_id = 13 | |
28 | 14 | sc |
29 | 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 | 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 | 36 | :aggregation_form => 'AVERAGE', |
34 | - :range => [RangeFixtures.range_excellent_hash, RangeFixtures.range_bad_hash], | |
37 | + :reading_group_id => 31, | |
35 | 38 | :attributes! => {:metric => { |
36 | 39 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
37 | - 'xsi:type' => 'kalibro:nativeMetricXml' }}} | |
40 | + 'xsi:type' => 'kalibro:metricXml' }} | |
41 | + } | |
38 | 42 | end |
39 | 43 | |
40 | 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 | 52 | :attributes! => {:metric => { |
43 | 53 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
44 | - 'xsi:type' => 'kalibro:compoundMetricXml' }}} | |
54 | + 'xsi:type' => 'kalibro:metricXml' }} | |
55 | + } | |
45 | 56 | end |
46 | 57 | |
47 | 58 | end | ... | ... |
plugins/mezuro/test/unit/kalibro/metric_configuration_test.rb
1 | 1 | require "test_helper" |
2 | 2 | |
3 | 3 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" |
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" | |
5 | 4 | |
6 | 5 | class MetricConfigurationTest < ActiveSupport::TestCase |
7 | 6 | |
8 | 7 | def setup |
9 | 8 | @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration |
10 | 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 | 11 | end |
16 | 12 | |
17 | 13 | should 'create metric configuration from hash' do |
... | ... | @@ -19,51 +15,34 @@ class MetricConfigurationTest < ActiveSupport::TestCase |
19 | 15 | end |
20 | 16 | |
21 | 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 | 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 | 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 | 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 | 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 | 46 | @native_metric_configuration.destroy |
68 | 47 | end |
69 | 48 | ... | ... |