kalibro_entities 0.0.1.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +21 -0
- data/AUTHORS +4 -0
- data/COPYING +674 -0
- data/COPYING.LESSER +165 -0
- data/Gemfile +4 -0
- data/README.md +77 -0
- data/Rakefile +6 -0
- data/cucumber.yml +1 -0
- data/features/base_tool/all_names.feature +8 -0
- data/features/base_tool/find_by_name.feature +12 -0
- data/features/configuration/all.feature +10 -0
- data/features/metric_configuration/find.feature +18 -0
- data/features/metric_configuration/metric_configurations_of.feature +18 -0
- data/features/metric_result/descendant_results.feature +19 -0
- data/features/metric_result/history_of.feature +20 -0
- data/features/metric_result/metric_results_of.feature +19 -0
- data/features/module_result/children.feature +18 -0
- data/features/module_result/find.feature +15 -0
- data/features/module_result/history_of.feature +11 -0
- data/features/processing/first_processing_after.feature +18 -0
- data/features/processing/first_processing_of.feature +18 -0
- data/features/processing/has_processing.feature +18 -0
- data/features/processing/has_processing_after.feature +18 -0
- data/features/processing/has_processing_before.feature +18 -0
- data/features/processing/has_ready_processing.feature +18 -0
- data/features/processing/last_processing_before.feature +18 -0
- data/features/processing/last_processing_of.feature +18 -0
- data/features/processing/last_processing_state_of.feature +18 -0
- data/features/processing/last_ready_processing_of.feature +18 -0
- data/features/processing/processing_of.feature +32 -0
- data/features/processing/processing_with_date_of.feature +32 -0
- data/features/project/all.feature +10 -0
- data/features/project/creation.feature +9 -0
- data/features/project/destroy.feature +10 -0
- data/features/project/exists.feature +9 -0
- data/features/project/find.feature +10 -0
- data/features/range/ranges_of.feature +22 -0
- data/features/range/save.feature +32 -0
- data/features/reading/find.feature +11 -0
- data/features/reading/readings_of.feature +11 -0
- data/features/reading_group/all.feature +10 -0
- data/features/repository/all.feature +14 -0
- data/features/repository/cancel_processing.feature +14 -0
- data/features/repository/find.feature +14 -0
- data/features/repository/of.feature +15 -0
- data/features/repository/process.feature +16 -0
- data/features/repository/types.feature +9 -0
- data/features/step_definitions/base_tool_steps.rb +28 -0
- data/features/step_definitions/configuration_steps.rb +11 -0
- data/features/step_definitions/metric_configuration_steps.rb +52 -0
- data/features/step_definitions/metric_result_steps.rb +29 -0
- data/features/step_definitions/metric_steps.rb +3 -0
- data/features/step_definitions/module_result_steps.rb +30 -0
- data/features/step_definitions/processing_steps.rb +91 -0
- data/features/step_definitions/project_steps.rb +48 -0
- data/features/step_definitions/range_steps.rb +41 -0
- data/features/step_definitions/reading_group_steps.rb +19 -0
- data/features/step_definitions/reading_steps.rb +20 -0
- data/features/step_definitions/repository_steps.rb +57 -0
- data/features/support/env.rb +25 -0
- data/features/support/kalibro_cucumber_helpers.yml.sample +10 -0
- data/kalibro_entities.gemspec +48 -0
- data/lib/kalibro_entities.rb +61 -0
- data/lib/kalibro_entities/entities.rb +37 -0
- data/lib/kalibro_entities/entities/base_tool.rb +54 -0
- data/lib/kalibro_entities/entities/configuration.rb +33 -0
- data/lib/kalibro_entities/entities/date_metric_result.rb +39 -0
- data/lib/kalibro_entities/entities/date_module_result.rb +39 -0
- data/lib/kalibro_entities/entities/metric.rb +21 -0
- data/lib/kalibro_entities/entities/metric_configuration.rb +70 -0
- data/lib/kalibro_entities/entities/metric_configuration_snapshot.rb +57 -0
- data/lib/kalibro_entities/entities/metric_result.rb +63 -0
- data/lib/kalibro_entities/entities/model.rb +162 -0
- data/lib/kalibro_entities/entities/module.rb +27 -0
- data/lib/kalibro_entities/entities/module_result.rb +69 -0
- data/lib/kalibro_entities/entities/process_time.rb +31 -0
- data/lib/kalibro_entities/entities/processing.rb +113 -0
- data/lib/kalibro_entities/entities/project.rb +34 -0
- data/lib/kalibro_entities/entities/range.rb +75 -0
- data/lib/kalibro_entities/entities/range_snapshot.rb +37 -0
- data/lib/kalibro_entities/entities/reading.rb +51 -0
- data/lib/kalibro_entities/entities/reading_group.rb +43 -0
- data/lib/kalibro_entities/entities/repository.rb +78 -0
- data/lib/kalibro_entities/entities/repository_observer.rb +50 -0
- data/lib/kalibro_entities/entities/stack_trace_element.rb +31 -0
- data/lib/kalibro_entities/entities/throwable.rb +42 -0
- data/lib/kalibro_entities/errors.rb +18 -0
- data/lib/kalibro_entities/errors/record_not_found.rb +22 -0
- data/lib/kalibro_entities/errors/standard.rb +24 -0
- data/lib/kalibro_entities/helpers/aggregation_options.rb +25 -0
- data/lib/kalibro_entities/helpers/hash_converters.rb +48 -0
- data/lib/kalibro_entities/helpers/request_methods.rb +47 -0
- data/lib/kalibro_entities/helpers/xml_converters.rb +20 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers.rb +40 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/configuration.rb +39 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/hooks.rb +50 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/delete_all_kalibro_entries.sh +23 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/prepare_kalibro_query_file.sh +38 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/put_kalibro_on_test_mode.sh +35 -0
- data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/return_kalibro_from_test_mode.sh +26 -0
- data/lib/kalibro_entities/version.rb +19 -0
- data/lib/rake/test_task.rb +57 -0
- data/spec/entities/base_tool_spec.rb +168 -0
- data/spec/entities/configuration_spec.rb +61 -0
- data/spec/entities/date_metric_result_spec.rb +62 -0
- data/spec/entities/date_module_result_spec.rb +61 -0
- data/spec/entities/metric_configuration_snapshot_spec.rb +107 -0
- data/spec/entities/metric_configuration_spec.rb +149 -0
- data/spec/entities/metric_result_spec.rb +193 -0
- data/spec/entities/metric_spec.rb +47 -0
- data/spec/entities/model_spec.rb +275 -0
- data/spec/entities/module_result_spec.rb +135 -0
- data/spec/entities/process_time_spec.rb +33 -0
- data/spec/entities/processing_spec.rb +334 -0
- data/spec/entities/project_spec.rb +68 -0
- data/spec/entities/range_snapshot_spec.rb +50 -0
- data/spec/entities/range_spec.rb +181 -0
- data/spec/entities/reading_group_spec.rb +90 -0
- data/spec/entities/reading_spec.rb +106 -0
- data/spec/entities/repository_observer_spec.rb +123 -0
- data/spec/entities/repository_spec.rb +167 -0
- data/spec/entities/stack_trace_element_spec.rb +26 -0
- data/spec/entities/throwable_spec.rb +51 -0
- data/spec/factories/base_tools.rb +31 -0
- data/spec/factories/configurations.rb +29 -0
- data/spec/factories/date_metric_results.rb +28 -0
- data/spec/factories/date_module_results.rb +22 -0
- data/spec/factories/metric_configurations.rb +28 -0
- data/spec/factories/metric_configurations_snapshot.rb +26 -0
- data/spec/factories/metric_results.rb +24 -0
- data/spec/factories/metrics.rb +35 -0
- data/spec/factories/models.rb +20 -0
- data/spec/factories/module_results.rb +33 -0
- data/spec/factories/modules.rb +22 -0
- data/spec/factories/process_times.rb +27 -0
- data/spec/factories/processings.rb +25 -0
- data/spec/factories/projects.rb +29 -0
- data/spec/factories/ranges.rb +30 -0
- data/spec/factories/ranges_snapshot.rb +26 -0
- data/spec/factories/reading_groups.rb +23 -0
- data/spec/factories/readings.rb +25 -0
- data/spec/factories/repositories.rb +34 -0
- data/spec/factories/repository_observers.rb +24 -0
- data/spec/factories/stack_trace_elements.rb +24 -0
- data/spec/factories/throwables.rb +23 -0
- data/spec/helpers/aggregation_options_spec.rb +31 -0
- data/spec/helpers/hash_converters_spec.rb +111 -0
- data/spec/helpers/xml_converters_spec.rb +64 -0
- data/spec/kalibro_entities_spec.rb +108 -0
- data/spec/savon/fixtures/config.yml +1 -0
- data/spec/savon/fixtures/invalid_config.yml +2 -0
- data/spec/savon/fixtures/project/does_not_exists.xml +1 -0
- data/spec/savon/savon_test_helper.rb +14 -0
- data/spec/spec_helper.rb +60 -0
- metadata +461 -0
@@ -0,0 +1,107 @@
|
|
1
|
+
# This file is part of KalibroEntities
|
2
|
+
# Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe KalibroEntities::Entities::MetricConfigurationSnapshot do
|
20
|
+
describe 'weight=' do
|
21
|
+
it 'should set the value of the attribute weight' do
|
22
|
+
subject.weight = "0.6"
|
23
|
+
subject.weight.should eq(0.6)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'metric=' do
|
28
|
+
let(:metric) { FactoryGirl.build(:metric) }
|
29
|
+
|
30
|
+
context 'when it is not a hash' do
|
31
|
+
it 'should set the value of the attribute metric' do
|
32
|
+
subject.metric = metric
|
33
|
+
subject.metric.should eq(metric)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'When it is a hash' do
|
38
|
+
before :each do
|
39
|
+
KalibroEntities::Entities::Metric.
|
40
|
+
expects(:to_object).
|
41
|
+
at_least_once.
|
42
|
+
with(metric.to_hash).
|
43
|
+
returns(metric)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should set the value of the attribute metric as an object' do
|
47
|
+
subject.metric = metric.to_hash
|
48
|
+
subject.metric.should eq(metric)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'range=' do
|
54
|
+
let(:range_snapshot) { FactoryGirl.build(:range_snapshot) }
|
55
|
+
let(:range_snapshot_hash) { range_snapshot.to_hash }
|
56
|
+
|
57
|
+
context 'with a single range' do
|
58
|
+
before :each do
|
59
|
+
KalibroEntities::Entities::RangeSnapshot.
|
60
|
+
expects(:to_object).
|
61
|
+
with(range_snapshot_hash).
|
62
|
+
returns(range_snapshot)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should set the value of the attribute range' do
|
66
|
+
subject.range = range_snapshot_hash
|
67
|
+
subject.range.should eq([range_snapshot])
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'with a list of many ranges' do
|
72
|
+
before :each do
|
73
|
+
KalibroEntities::Entities::RangeSnapshot.
|
74
|
+
expects(:to_object).
|
75
|
+
twice.with(range_snapshot_hash).
|
76
|
+
returns(range_snapshot)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should set the value of the attribute range' do
|
80
|
+
subject.range = [range_snapshot_hash, range_snapshot_hash]
|
81
|
+
ranges = subject.range
|
82
|
+
ranges.size.should eq(2)
|
83
|
+
ranges.first.should eq (range_snapshot)
|
84
|
+
ranges.last.should eq (range_snapshot)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe 'range_snapshot' do
|
90
|
+
subject { FactoryGirl.build(:metric_configuration_snapshot) }
|
91
|
+
|
92
|
+
it 'should return the value of the range attribute' do
|
93
|
+
subject.range_snapshot.should eq(subject.range)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'to_hash' do
|
98
|
+
subject {FactoryGirl.build(:metric_configuration_snapshot)}
|
99
|
+
|
100
|
+
it 'should override the default to_hash method' do
|
101
|
+
hash = subject.to_hash
|
102
|
+
hash[:attributes!][:range].
|
103
|
+
should eq({'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance',
|
104
|
+
'xsi:type' => 'kalibro:rangeSnapshotXml' })
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
# This file is part of KalibroEntities
|
2
|
+
# Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe KalibroEntities::Entities::MetricConfiguration do
|
20
|
+
describe 'id=' do
|
21
|
+
it 'should set the id as an Integer' do
|
22
|
+
subject.id = "42"
|
23
|
+
subject.id.should eq(42)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'reading_group_id=' do
|
28
|
+
it 'should set the reading group id' do
|
29
|
+
subject.reading_group_id = "1"
|
30
|
+
subject.reading_group_id.should eq(1)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'metric=' do
|
35
|
+
let(:metric) { FactoryGirl.build(:metric) }
|
36
|
+
|
37
|
+
before :each do
|
38
|
+
KalibroEntities::Entities::Metric.
|
39
|
+
expects(:to_object).at_least_once.
|
40
|
+
with(metric.to_hash).
|
41
|
+
returns(metric)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should convert the argument and set the metric' do
|
45
|
+
subject.metric = metric.to_hash
|
46
|
+
subject.metric.should eq(metric)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'weight=' do
|
51
|
+
it 'should set the weight' do
|
52
|
+
subject.weight = "10"
|
53
|
+
subject.weight.should eq(10)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'update_attributes' do
|
58
|
+
let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
|
59
|
+
|
60
|
+
before :each do
|
61
|
+
KalibroEntities::Entities::MetricConfiguration.any_instance.
|
62
|
+
expects(:save).
|
63
|
+
returns(true)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should set the attributes and save' do
|
67
|
+
subject.update_attributes(metric_configuration.to_hash)
|
68
|
+
subject.code.should eq(metric_configuration.code)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe 'to_hash' do
|
73
|
+
subject {FactoryGirl.build(:metric_configuration)}
|
74
|
+
|
75
|
+
it 'should not include the configuration_id' do
|
76
|
+
subject.to_hash[:configuration_id].should be_nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'find' do
|
81
|
+
let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
|
82
|
+
|
83
|
+
context 'with and existant MetricConfiguration' do
|
84
|
+
before :each do
|
85
|
+
KalibroEntities::Entities::MetricConfiguration.
|
86
|
+
expects(:request).
|
87
|
+
with(:get_metric_configuration, {:metric_configuration_id => metric_configuration.id}).
|
88
|
+
returns({metric_configuration: metric_configuration.to_hash})
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should return the metric_configuration' do
|
92
|
+
KalibroEntities::Entities::MetricConfiguration.find(metric_configuration.id).
|
93
|
+
id.should eq(metric_configuration.id)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'with an inexistant MetricConfiguration' do
|
98
|
+
before :each do
|
99
|
+
any_code = rand(Time.now.to_i)
|
100
|
+
any_error_message = ""
|
101
|
+
KalibroEntities::Entities::MetricConfiguration.
|
102
|
+
expects(:request).
|
103
|
+
with(:get_metric_configuration, {:metric_configuration_id => metric_configuration.id}).
|
104
|
+
raises(Savon::SOAPFault.new(any_error_message, any_code))
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'should raise the RecordNotFound error' do
|
108
|
+
expect {KalibroEntities::Entities::MetricConfiguration.find(metric_configuration.id)}.
|
109
|
+
to raise_error(KalibroEntities::Errors::RecordNotFound)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe 'metric_configurations_of' do
|
115
|
+
let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
|
116
|
+
let(:configuration) { FactoryGirl.build(:configuration) }
|
117
|
+
|
118
|
+
before :each do
|
119
|
+
KalibroEntities::Entities::MetricConfiguration.
|
120
|
+
expects(:request).
|
121
|
+
with(:metric_configurations_of, {:configuration_id => configuration.id}).
|
122
|
+
returns({metric_configuration: metric_configuration.to_hash})
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should return a array with a metric configuration' do
|
126
|
+
metric_configurations = KalibroEntities::Entities::MetricConfiguration.metric_configurations_of(configuration.id)
|
127
|
+
|
128
|
+
metric_configurations.should be_an(Array)
|
129
|
+
metric_configurations.first.id.should eq(metric_configuration.id)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# The only purpose of this test is to cover the overrided save_params method
|
134
|
+
describe 'save' do
|
135
|
+
subject {FactoryGirl.build(:metric_configuration, {id: nil})}
|
136
|
+
|
137
|
+
before :each do
|
138
|
+
KalibroEntities::Entities::MetricConfiguration.
|
139
|
+
expects(:request).
|
140
|
+
with(:save_metric_configuration, {:metric_configuration => subject.to_hash, :configuration_id => subject.configuration_id}).
|
141
|
+
returns({:metric_configuration_id => 1})
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'should make a request to save model with id and return true without errors' do
|
145
|
+
subject.save.should be(true)
|
146
|
+
subject.kalibro_errors.should be_empty
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,193 @@
|
|
1
|
+
# This file is part of KalibroEntities
|
2
|
+
# Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe KalibroEntities::Entities::MetricResult do
|
20
|
+
subject { FactoryGirl.build(:metric_result) }
|
21
|
+
let(:metric_configuration_snapshot) { FactoryGirl.build(:metric_configuration_snapshot) }
|
22
|
+
|
23
|
+
describe 'id=' do
|
24
|
+
it 'should set the value of the attribute id' do
|
25
|
+
subject.id = 42
|
26
|
+
subject.id.should eq(42)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'configuration=' do
|
31
|
+
it 'should set the configuration' do
|
32
|
+
subject.configuration = metric_configuration_snapshot.to_hash
|
33
|
+
subject.configuration.code.should eq(metric_configuration_snapshot.code)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'metric_configuration_snapshot' do
|
38
|
+
it 'should be an alias to configuration' do
|
39
|
+
subject.configuration = metric_configuration_snapshot.to_hash
|
40
|
+
subject.metric_configuration_snapshot.code.should eq(metric_configuration_snapshot.code)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'value=' do
|
45
|
+
it 'should set the value of the attribute value' do
|
46
|
+
subject.value = 42
|
47
|
+
subject.value.should eq(42)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'aggregated_value=' do
|
52
|
+
it 'should set the value of the attribute aggregated_value' do
|
53
|
+
subject.aggregated_value = 42
|
54
|
+
subject.aggregated_value.should eq(42)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe 'descendant_results_of' do
|
59
|
+
context 'when there is one descendant result for the given metric_result' do
|
60
|
+
before :each do
|
61
|
+
KalibroEntities::Entities::MetricResult.
|
62
|
+
expects(:request).
|
63
|
+
with(:descendant_results_of, { :metric_result_id => subject.id }).
|
64
|
+
returns({descendant_result: "13.3"})
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should return an unitary list with the descendant result' do
|
68
|
+
subject.descendant_results.should eq([13.3])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when there is no descendant result for the given metric_result' do
|
73
|
+
before :each do
|
74
|
+
KalibroEntities::Entities::MetricResult.
|
75
|
+
expects(:request).
|
76
|
+
with(:descendant_results_of, { :metric_result_id => subject.id }).
|
77
|
+
returns({})
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should return an empty list' do
|
81
|
+
subject.descendant_results.should eq([])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'when there are many descendant results for the given metric_result' do
|
86
|
+
before :each do
|
87
|
+
KalibroEntities::Entities::MetricResult.
|
88
|
+
expects(:request).
|
89
|
+
with(:descendant_results_of, { :metric_result_id => subject.id }).
|
90
|
+
returns({descendant_result: ["-13.3", "42.42", "1"]})
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should return a list with the descendant results' do
|
94
|
+
subject.descendant_results.should eq([-13.3, 42.42, 1])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe 'metric_results_of' do
|
100
|
+
context 'when there is one metric result for the given module_result' do
|
101
|
+
before :each do
|
102
|
+
KalibroEntities::Entities::MetricResult.
|
103
|
+
expects(:request).
|
104
|
+
with(:metric_results_of, { :module_result_id => 123 }).
|
105
|
+
returns({metric_result: subject.to_hash})
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should return an unitary list with the metric result' do
|
109
|
+
KalibroEntities::Entities::MetricResult.metric_results_of(123).first.value.should eq(subject.value)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when there is no metric result for the given module_result' do
|
114
|
+
before :each do
|
115
|
+
KalibroEntities::Entities::MetricResult.
|
116
|
+
expects(:request).
|
117
|
+
with(:metric_results_of, { :module_result_id => 42 }).
|
118
|
+
returns({})
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should return an empty list' do
|
122
|
+
KalibroEntities::Entities::MetricResult.metric_results_of(42).should eq([])
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'when there are many metric results for the given module_result' do
|
127
|
+
let(:metric_results) { KalibroEntities::Entities::MetricResult.metric_results_of(28) }
|
128
|
+
before :each do
|
129
|
+
KalibroEntities::Entities::MetricResult.
|
130
|
+
expects(:request).
|
131
|
+
with(:metric_results_of, { :module_result_id => 28 }).
|
132
|
+
returns({metric_result: [subject.to_hash, subject.to_hash]})
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'should return a list with the descendant results' do
|
136
|
+
metric_results.first.value.should eq(subject.value)
|
137
|
+
metric_results.last.aggregated_value.should eq(subject.aggregated_value)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe 'history_of' do
|
143
|
+
let(:module_result) { FactoryGirl.build(:module_result) }
|
144
|
+
let(:metric) { FactoryGirl.build(:metric) }
|
145
|
+
|
146
|
+
context 'when there is not a date metric result' do
|
147
|
+
before :each do
|
148
|
+
KalibroEntities::Entities::MetricResult.
|
149
|
+
expects(:request).
|
150
|
+
with(:history_of_metric, {:metric_name => metric.name, :module_result_id => module_result.id}).
|
151
|
+
returns({date_metric_result: nil})
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'should return an empty list' do
|
155
|
+
KalibroEntities::Entities::MetricResult.history_of(metric.name, module_result.id).should eq([])
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when there is only one date metric result' do
|
160
|
+
let(:date_metric_result) { FactoryGirl.build(:date_metric_result, {metric_result: subject}) }
|
161
|
+
|
162
|
+
before :each do
|
163
|
+
KalibroEntities::Entities::MetricResult.
|
164
|
+
expects(:request).
|
165
|
+
with(:history_of_metric, {:metric_name => metric.name, :module_result_id => module_result.id}).
|
166
|
+
returns({date_metric_result: date_metric_result.to_hash})
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'should return the date metric result as an object into a list' do
|
170
|
+
KalibroEntities::Entities::MetricResult.history_of(metric.name, module_result.id).
|
171
|
+
first.metric_result.id.should eq(subject.id)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
context 'when there is many date metric results' do
|
176
|
+
let(:date_metric_result) { FactoryGirl.build(:date_metric_result, {metric_result: subject}) }
|
177
|
+
let(:another_date_metric_result) { FactoryGirl.build(:another_date_metric_result, {metric_result: subject}) }
|
178
|
+
|
179
|
+
before :each do
|
180
|
+
KalibroEntities::Entities::MetricResult.
|
181
|
+
expects(:request).
|
182
|
+
with(:history_of_metric, {:metric_name => metric.name, :module_result_id => module_result.id}).
|
183
|
+
returns({date_metric_result: [date_metric_result.to_hash, another_date_metric_result.to_hash]})
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'should return a list of date metric results as objects' do
|
187
|
+
response = KalibroEntities::Entities::MetricResult.history_of(metric.name, module_result.id)
|
188
|
+
response.first.metric_result.id.should eq(date_metric_result.metric_result.id)
|
189
|
+
response.last.metric_result.id.should eq(another_date_metric_result.metric_result.id)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|