Commit b312147c2f4acc2dc3ecae9c14462df40401f3f0

Authored by Daniel Alves
Committed by Rafael Manzo
1 parent 61018586

[WIP] Fixing metric configuration acceptance tests

Signed off by: Diego Araújo <diegoamc90@gmail.com>
features/step_definitions/metric_configuration_steps.rb
1 1 Given(/^I have a sample metric configuration within the given mezuro configuration$/) do
2 2 @metric_configuration = FactoryGirl.create(:metric_configuration,
3   - {id: nil, configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id} )
  3 + {kalibro_configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id} )
4 4 end
5 5  
6 6 Given(/^I have another metric configuration with code "(.*?)" within the given mezuro configuration$/) do |code|
7 7 @another_metric_configuration = FactoryGirl.create(:metric_configuration,
8   - {id: nil, configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id, code: code} )
  8 + {kalibro_configuration_id: @kalibro_configuration.id, reading_group_id: @reading_group.id, code: code} )
9 9 end
10 10  
11 11 When(/^I visit the sample metric configuration edit page$/) do
12   - visit edit_kalibro_configuration_metric_configuration_path(@metric_configuration.configuration_id, @metric_configuration.id)
  12 + visit edit_kalibro_configuration_metric_configuration_path(@metric_configuration.kalibro_configuration_id, @metric_configuration.id)
13 13 end
14 14  
15 15 When(/^I visit the sample metric configuration page$/) do
16   - visit kalibro_configuration_metric_configuration_path(@metric_configuration.configuration_id, @metric_configuration.id)
  16 + visit kalibro_configuration_metric_configuration_path(@metric_configuration.kalibro_configuration_id, @metric_configuration.id)
17 17 end
18 18  
19 19 When(/^I visit the sample metric configuration page$/) do
... ... @@ -21,7 +21,7 @@ When(/^I visit the sample metric configuration page$/) do
21 21 end
22 22  
23 23 Then(/^I am at the sample metric configuration page$/) do
24   - visit kalibro_configuration_metric_configuration_path(@metric_configuration.configuration_id, @metric_configuration.id)
  24 + visit kalibro_configuration_metric_configuration_path(@metric_configuration.kalibro_configuration_id, @metric_configuration.id)
25 25 expect(page).to have_content(@metric_configuration.metric.name)
26 26 expect(page).to have_content("Ranges")
27 27 end
... ...
features/step_definitions/repository_steps.rb
... ... @@ -3,8 +3,7 @@ Given(/^I have a sample configuration with native metrics but without ranges$/)
3 3 reading = FactoryGirl.create(:reading, {id: nil, group_id: reading_group.id})
4 4 @kalibro_configuration = FactoryGirl.create(:kalibro_configuration, id: nil)
5 5 metric_configuration = FactoryGirl.create(:metric_configuration,
6   - {id: nil,
7   - metric: FactoryGirl.build(:loc),
  6 + {metric: FactoryGirl.build(:loc),
8 7 reading_group_id: reading_group.id,
9 8 configuration_id: @kalibro_configuration.id,
10 9 code: 'loc'})
... ... @@ -15,12 +14,11 @@ Given(/^I have a sample configuration with native metrics$/) do
15 14 reading = FactoryGirl.create(:reading, {id: nil, reading_group_id: reading_group.id})
16 15  
17 16 KalibroClient::Processor::MetricCollector.find('Analizo').supported_metrics.select { |x| not x.persisted? }.save
18   -
  17 +
19 18  
20 19 @kalibro_configuration = FactoryGirl.create(:kalibro_configuration, id: nil)
21   - metric_configuration = FactoryGirl.create(:metric_configuration_with_snapshot,
22   - {id: nil,
23   - metric: FactoryGirl.build(:loc),
  20 + metric_configuration = FactoryGirl.create(:metric_configuration,
  21 + {metric: FactoryGirl.build(:loc),
24 22 reading_group_id: reading_group.id,
25 23 kalibro_configuration_id: @kalibro_configuration.id,
26 24 code: 'loc'})
... ...
spec/controllers/base_metric_configurations_controller_spec.rb
... ... @@ -64,8 +64,8 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do
64 64 sign_in FactoryGirl.create(:user)
65 65 end
66 66  
67   - context 'when the current user owns the mezuro configuration' do
68   - let!(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  67 + context 'when the current user owns the kalibro configuration' do
  68 + let!(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
69 69 before :each do
70 70 subject.expects(:kalibro_configuration_owner?).returns true
71 71 get :new, kalibro_configuration_id: kalibro_configuration.id
... ... @@ -75,7 +75,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do
75 75 it { is_expected.to respond_with(:success) }
76 76 end
77 77  
78   - context "when the current user doesn't owns the mezuro configuration" do
  78 + context "when the current user doesn't owns the kalibro configuration" do
79 79 before :each do
80 80 get :new, kalibro_configuration_id: kalibro_configuration.id
81 81 end
... ... @@ -93,7 +93,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do
93 93 sign_in FactoryGirl.create(:user)
94 94 end
95 95  
96   - context 'when the current user owns the mezuro configuration' do
  96 + context 'when the current user owns the kalibro configuration' do
97 97 before :each do
98 98 subject.expects(:kalibro_configuration_owner?).returns true
99 99 end
... ... @@ -110,7 +110,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type =&gt; :controller do
110 110 end
111 111  
112 112 describe 'show' do
113   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  113 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
114 114 let(:reading_group) { FactoryGirl.build(:reading_group) }
115 115 let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }
116 116  
... ...
spec/controllers/compound_metric_configurations_controller_spec.rb
... ... @@ -8,7 +8,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
8 8 sign_in FactoryGirl.create(:user)
9 9 end
10 10  
11   - context 'when the current user owns the mezuro configuration' do
  11 + context 'when the current user owns the kalibro configuration' do
12 12 let!(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
13 13 before :each do
14 14 subject.expects(:kalibro_configuration_owner?).returns true
... ... @@ -20,7 +20,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
20 20 it { is_expected.to render_template(:new) }
21 21 end
22 22  
23   - context "when the current user doesn't owns the mezuro configuration" do
  23 + context "when the current user doesn't owns the kalibro configuration" do
24 24 before :each do
25 25 get :new, kalibro_configuration_id: kalibro_configuration.id
26 26 end
... ... @@ -70,7 +70,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
70 70 end
71 71  
72 72 describe 'show' do
73   - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) }
  73 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
74 74 let(:reading_group) { FactoryGirl.build(:reading_group) }
75 75 let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }
76 76  
... ... @@ -86,7 +86,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
86 86 end
87 87  
88 88 describe 'edit' do
89   - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) }
  89 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
90 90  
91 91 context 'with an User logged in' do
92 92 before do
... ... @@ -125,8 +125,8 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
125 125 end
126 126  
127 127 describe 'update' do
128   - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) }
129   - let(:metric_configuration_params) { Hash[FactoryGirl.attributes_for(:compound_metric_configuration).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
  128 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
  129 + let(:metric_configuration_params) { Hash[FactoryGirl.attributes_for(:compound_metric_configuration_with_id).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
130 130  
131 131 context 'when the user is logged in' do
132 132 before do
... ...
spec/controllers/concerns/metric_configurations_concern_spec.rb
... ... @@ -2,7 +2,7 @@ require &#39;rails_helper&#39;
2 2  
3 3 describe MetricConfigurationsConcern, type: :controller do
4 4 describe 'set_metric_configuration' do
5   - let! (:metric_configuration){ FactoryGirl.build(:metric_configuration) }
  5 + let! (:metric_configuration){ FactoryGirl.build(:metric_configuration_with_id) }
6 6 let! (:metric_configurations_controller) { MetricConfigurationsController.new }
7 7  
8 8 before :each do
... ...
spec/controllers/metric_configurations_controller_spec.rb
... ... @@ -28,7 +28,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
28 28 sign_in FactoryGirl.create(:user)
29 29 end
30 30  
31   - context 'when the current user owns the mezuro configuration' do
  31 + context 'when the current user owns the kalibro configuration' do
32 32 before :each do
33 33 subject.expects(:kalibro_configuration_owner?).returns true
34 34 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find).with(metric_collector.name).returns(metric_collector)
... ... @@ -40,7 +40,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
40 40 it { is_expected.to render_template(:new) }
41 41 end
42 42  
43   - context "when the current user doesn't owns the mezuro configuration" do
  43 + context "when the current user doesn't owns the kalibro configuration" do
44 44 before :each do
45 45 post :new, kalibro_configuration_id: kalibro_configuration.id, metric_name: "Lines of Code", metric_collector_name: metric_collector.name
46 46 end
... ... @@ -92,7 +92,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
92 92 end
93 93  
94 94 describe 'show' do
95   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  95 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
96 96 let(:reading_group) { FactoryGirl.build(:reading_group) }
97 97 let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }
98 98  
... ... @@ -108,7 +108,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
108 108 end
109 109  
110 110 describe 'edit' do
111   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  111 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
112 112  
113 113 context 'with an User logged in' do
114 114 before do
... ... @@ -146,8 +146,8 @@ describe MetricConfigurationsController, :type =&gt; :controller do
146 146 end
147 147  
148 148 describe 'update' do
149   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
150   - let(:metric_configuration_params) { Hash[FactoryGirl.attributes_for(:metric_configuration).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
  149 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
  150 + let(:metric_configuration_params) { metric_configuration.to_hash }
151 151  
152 152 context 'when the user is logged in' do
153 153 before do
... ... @@ -195,7 +195,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
195 195  
196 196  
197 197 describe 'destroy' do
198   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  198 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
199 199  
200 200 context 'with an User logged in' do
201 201 before do
... ...
spec/controllers/mezuro_configurations_controller_spec.rb
... ... @@ -61,7 +61,7 @@ describe KalibroConfigurationsController, :type =&gt; :controller do
61 61  
62 62 describe 'show' do
63 63 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration) }
64   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  64 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
65 65  
66 66 before :each do
67 67 kalibro_configuration.expects(:metric_configurations).returns(metric_configuration)
... ...
spec/controllers/mezuro_ranges_controller_spec.rb
... ... @@ -2,7 +2,7 @@ require &#39;rails_helper&#39;
2 2  
3 3 describe MezuroRangesController, :type => :controller do
4 4 let(:mezuro_range) { FactoryGirl.build(:mezuro_range, id: 1) }
5   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  5 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
6 6  
7 7 describe 'new' do
8 8 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration) }
... ... @@ -109,7 +109,7 @@ describe MezuroRangesController, :type =&gt; :controller do
109 109 end
110 110  
111 111 describe 'edit' do
112   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  112 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
113 113 let(:mezuro_range) { FactoryGirl.build(:mezuro_range, id: 1, metric_configuration_id: metric_configuration.id) }
114 114 let(:reading) { FactoryGirl.build(:reading, reading_group_id: metric_configuration.reading_group_id) }
115 115  
... ... @@ -153,7 +153,7 @@ describe MezuroRangesController, :type =&gt; :controller do
153 153 end
154 154  
155 155 describe 'update' do
156   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  156 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
157 157 let(:mezuro_range) { FactoryGirl.build(:mezuro_range, id: 1, metric_configuration_id: metric_configuration.id) }
158 158 let(:mezuro_range_params) { Hash[FactoryGirl.attributes_for(:mezuro_range).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
159 159 let(:reading) { FactoryGirl.build(:reading, reading_group_id: metric_configuration.reading_group_id) }
... ...
spec/factories/metric_configurations.rb
1 1 FactoryGirl.define do
2 2 factory :metric_configuration, class: MetricConfiguration do
3   - id 1
4 3 metric {FactoryGirl.build(:metric, code: 'total_abstract_classes')}
5 4 weight 1
6 5 aggregation_form "AVERAGE"
7 6 reading_group_id 1
8 7 kalibro_configuration_id 1
  8 +
  9 + trait :with_id do
  10 + id 1
  11 + end
  12 +
  13 + factory :metric_configuration_with_id, traits: [:with_id]
9 14 end
10 15  
11 16 factory :compound_metric_configuration, class: MetricConfiguration do
12   - id 1
13 17 metric { FactoryGirl.build(:compound_metric, script: 'native*2;', code: 'compound') }
14 18 weight 1
15 19 aggregation_form "AVERAGE"
16 20 reading_group_id 1
17 21 kalibro_configuration_id 1
  22 +
  23 + trait :with_id do
  24 + id 1
  25 + end
  26 +
  27 + factory :compound_metric_configuration_with_id, traits: [:with_id]
18 28 end
19 29  
20   - factory :another_metric_configuration, class: MetricConfiguration do
  30 + factory :another_metric_configuration_with_id, class: MetricConfiguration do
21 31 id 1
22 32 metric {FactoryGirl.build(:metric, code: 'total_modules')}
23 33 weight 1
... ...
spec/factories/metric_results.rb
... ... @@ -17,7 +17,7 @@
17 17 FactoryGirl.define do
18 18 factory :metric_result, class: KalibroClient::Entities::Processor::MetricResult do
19 19 id "42"
20   - metric_configuration { FactoryGirl.build(:metric_configuration) }
  20 + metric_configuration { FactoryGirl.build(:metric_configuration_with_id) }
21 21 value "10.0"
22 22 aggregated_value "21"
23 23 end
... ...
spec/helpers/metric_configurations_helper_spec.rb
... ... @@ -21,7 +21,7 @@ describe MetricConfigurationsHelper, :type =&gt; :helper do
21 21 end
22 22  
23 23 describe 'native_metrics_of' do
24   - let! (:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  24 + let! (:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
25 25  
26 26 before :each do
27 27 MetricConfiguration.expects(:metric_configurations_of).with(metric_configuration.kalibro_configuration_id).returns([metric_configuration])
... ...
spec/helpers/mezuro_configurations_helper_spec.rb
... ... @@ -44,14 +44,14 @@ describe KalibroConfigurationsHelper, :type =&gt; :helper do
44 44  
45 45 describe 'link to edit form' do
46 46 context 'when the metric is native' do
47   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  47 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
48 48 let(:response_link) {"<a class=\"btn btn-info\" href=\"/kalibro_configurations/#{metric_configuration.kalibro_configuration_id}/metric_configurations/#{metric_configuration.id}/edit\">Edit</a>"}
49 49  
50 50 it { expect(helper.link_to_edit_form(metric_configuration, metric_configuration.kalibro_configuration_id)).to eq(response_link) }
51 51 end
52 52  
53 53 context 'when the metric is compound' do
54   - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) }
  54 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
55 55 let(:response_link) {"<a class=\"btn btn-info\" href=\"/kalibro_configurations/#{compound_metric_configuration.kalibro_configuration_id}/compound_metric_configurations/#{compound_metric_configuration.id}/edit\">Edit</a>"}
56 56  
57 57 it { expect(helper.link_to_edit_form(compound_metric_configuration, compound_metric_configuration.kalibro_configuration_id)).to eq(response_link) }
... ... @@ -60,14 +60,14 @@ describe KalibroConfigurationsHelper, :type =&gt; :helper do
60 60  
61 61 describe 'link to show page' do
62 62 context 'when the metric is native' do
63   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  63 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
64 64 let(:response_link) {"<a class=\"btn btn-info\" href=\"/kalibro_configurations/#{metric_configuration.kalibro_configuration_id}/metric_configurations/#{metric_configuration.id}\">Show</a>"}
65 65  
66 66 it { expect(helper.link_to_show_page(metric_configuration, metric_configuration.kalibro_configuration_id)).to eq(response_link) }
67 67 end
68 68  
69 69 context 'when the metric is compound' do
70   - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) }
  70 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
71 71 let(:response_link) {"<a class=\"btn btn-info\" href=\"/kalibro_configurations/#{compound_metric_configuration.kalibro_configuration_id}/compound_metric_configurations/#{compound_metric_configuration.id}\">Show</a>"}
72 72  
73 73 it { expect(helper.link_to_show_page(compound_metric_configuration, compound_metric_configuration.kalibro_configuration_id)).to eq(response_link) }
... ...
spec/helpers/processings_helper_spec.rb
... ... @@ -14,7 +14,7 @@ describe ProcessingsHelper, :type =&gt; :helper do
14 14 end
15 15  
16 16 describe 'find_range_snapshot' do
17   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration)}
  17 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id)}
18 18 let(:metric_result) { FactoryGirl.build(:metric_result, {value: 6.0, metric_configuration: metric_configuration})}
19 19 let(:range_snapshot_1_to_5) { FactoryGirl.build(:range_snapshot, {beginning: 1.0, end: 5.0}) }
20 20 let(:range_snapshot_5dot1_to_10) { FactoryGirl.build(:range_snapshot, {beginning: 5.1, end: 10.0}) }
... ...
spec/models/module_result_spec.rb
... ... @@ -3,10 +3,10 @@ require &#39;rails_helper&#39;
3 3 describe ModuleResult, :type => :model do
4 4 describe 'methods' do
5 5 subject { FactoryGirl.build(:module_result) }
6   -
  6 +
7 7 describe 'metric_history' do
8 8 let(:date_module_result) {FactoryGirl.build(:date_module_result)}
9   - let(:metric_configuration) { FactoryGirl.build(:another_metric_configuration) }
  9 + let(:metric_configuration) { FactoryGirl.build(:another_metric_configuration_with_id) }
10 10 let!(:metric_result) { FactoryGirl.build(:metric_result, metric_configuration: metric_configuration) }
11 11 let(:processing) {FactoryGirl.build(:processing)}
12 12 let(:repository) {FactoryGirl.build(:repository)}
... ...