Commit 82bc8ca48aacd98fc56508eb8da1d7eab120ca78

Authored by Heitor
Committed by Rafael Manzo
1 parent 987ca379

Update MetricConfiguration controllers' tests

- Fix usage of MetricConfiguration models converted directly to hashes
as parameters. It didn't reflect how they are actually sent and omitted
some necessary parameters like metric_collector_name and
metric_name/metric_code, which are now passed.
- Fix KalibroConfigurations not being searched by the controller
methods. We must be sure they exist, and fail with a 404 if they don't
instead of failing only in one of the ownership testing methods.
- Update the expectations for cache cleaning to include both Hotspot and
Tree MetricConfigurations

Signed off by: Daniel Miranda <danielkza2@gmail.com>
spec/controllers/compound_metric_configurations_controller_spec.rb
@@ -11,6 +11,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -11,6 +11,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
11 context 'when the current user owns the kalibro configuration' do 11 context 'when the current user owns the kalibro configuration' do
12 let!(:metric_configuration) { FactoryGirl.build(:metric_configuration) } 12 let!(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
13 before :each do 13 before :each do
  14 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
14 subject.expects(:kalibro_configuration_owner?).returns true 15 subject.expects(:kalibro_configuration_owner?).returns true
15 MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([metric_configuration]) 16 MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([metric_configuration])
16 get :new, kalibro_configuration_id: kalibro_configuration.id 17 get :new, kalibro_configuration_id: kalibro_configuration.id
@@ -31,24 +32,24 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -31,24 +32,24 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
31 end 32 end
32 33
33 describe 'create' do 34 describe 'create' do
34 - let!(:metric_configuration_params) { FactoryGirl.build(:metric_configuration).to_hash }  
35 - let!(:metric_params) { FactoryGirl.build(:metric).to_hash }  
36 - let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration) } 35 + let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration, reading_group_id: 1) }
  36 + let!(:metric_configuration_params) { compound_metric_configuration.to_hash }
37 37
38 before do 38 before do
39 sign_in FactoryGirl.create(:user) 39 sign_in FactoryGirl.create(:user)
40 - metric_configuration_params["metric"] = metric_params  
41 end 40 end
42 41
43 context 'when the current user owns the reading group' do 42 context 'when the current user owns the reading group' do
44 before :each do 43 before :each do
  44 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
45 subject.expects(:kalibro_configuration_owner?).returns true 45 subject.expects(:kalibro_configuration_owner?).returns true
46 - Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations")  
47 end 46 end
48 47
49 context 'with valid fields' do 48 context 'with valid fields' do
50 before :each do 49 before :each do
51 MetricConfiguration.any_instance.expects(:save).returns(true) 50 MetricConfiguration.any_instance.expects(:save).returns(true)
  51 + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations")
  52 + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_hotspot_metric_configurations")
52 53
53 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params 54 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params
54 end 55 end
@@ -59,7 +60,6 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -59,7 +60,6 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
59 context 'with invalid fields' do 60 context 'with invalid fields' do
60 before :each do 61 before :each do
61 MetricConfiguration.any_instance.expects(:save).returns(false) 62 MetricConfiguration.any_instance.expects(:save).returns(false)
62 - MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([compound_metric_configuration])  
63 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params 63 post :create, kalibro_configuration_id: kalibro_configuration.id, metric_configuration: metric_configuration_params
64 end 64 end
65 65
@@ -74,6 +74,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -74,6 +74,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
74 let(:kalibro_range) { FactoryGirl.build(:kalibro_range) } 74 let(:kalibro_range) { FactoryGirl.build(:kalibro_range) }
75 75
76 before :each do 76 before :each do
  77 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
77 ReadingGroup.expects(:find).with(compound_metric_configuration.reading_group_id).returns(reading_group) 78 ReadingGroup.expects(:find).with(compound_metric_configuration.reading_group_id).returns(reading_group)
78 MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration) 79 MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration)
79 compound_metric_configuration.expects(:kalibro_ranges).returns([kalibro_range]) 80 compound_metric_configuration.expects(:kalibro_ranges).returns([kalibro_range])
@@ -94,6 +95,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -94,6 +95,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
94 95
95 context 'when the user owns the compound metric configuration' do 96 context 'when the user owns the compound metric configuration' do
96 before :each do 97 before :each do
  98 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
97 subject.expects(:metric_configuration_owner?).returns(true) 99 subject.expects(:metric_configuration_owner?).returns(true)
98 MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration) 100 MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration)
99 MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([compound_metric_configuration]) 101 MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([compound_metric_configuration])
@@ -125,7 +127,14 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -125,7 +127,14 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
125 127
126 describe 'update' do 128 describe 'update' do
127 let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) } 129 let(:compound_metric_configuration) { FactoryGirl.build(:compound_metric_configuration_with_id) }
128 - 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 + # Exclude the parameters that come in the URL (as the ones in the body will always be ignored)
  131 + let(:metric_configuration_params) { compound_metric_configuration.to_hash.except('id', 'kalibro_configuration_id', 'type') }
  132 + # Exclude the reading group id since it is set beforehand and not in the update params
  133 + let(:update_params) do
  134 + params = metric_configuration_params.except('reading_group_id')
  135 + params['metric'].except!('type')
  136 + params
  137 + end
129 138
130 context 'when the user is logged in' do 139 context 'when the user is logged in' do
131 before do 140 before do
@@ -134,14 +143,16 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -134,14 +143,16 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
134 143
135 context 'when user owns the metric configuration' do 144 context 'when user owns the metric configuration' do
136 before :each do 145 before :each do
  146 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
  147 + MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration)
137 subject.expects(:metric_configuration_owner?).returns true 148 subject.expects(:metric_configuration_owner?).returns true
138 - Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations")  
139 end 149 end
140 150
141 context 'with valid fields' do 151 context 'with valid fields' do
142 before :each do 152 before :each do
143 - MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration)  
144 - MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(true) 153 + MetricConfiguration.any_instance.expects(:update).with(update_params).returns(true)
  154 + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_tree_metric_configurations")
  155 + Rails.cache.expects(:delete).with("#{kalibro_configuration.id}_hotspot_metric_configurations")
145 156
146 post :update, kalibro_configuration_id: compound_metric_configuration.kalibro_configuration_id, id: compound_metric_configuration.id, metric_configuration: metric_configuration_params 157 post :update, kalibro_configuration_id: compound_metric_configuration.kalibro_configuration_id, id: compound_metric_configuration.id, metric_configuration: metric_configuration_params
147 end 158 end
@@ -152,9 +163,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do @@ -152,9 +163,7 @@ describe CompoundMetricConfigurationsController, :type =&gt; :controller do
152 163
153 context 'with an invalid field' do 164 context 'with an invalid field' do
154 before :each do 165 before :each do
155 - MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration)  
156 - MetricConfiguration.expects(:metric_configurations_of).with(kalibro_configuration.id).returns([compound_metric_configuration])  
157 - MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(false) 166 + MetricConfiguration.any_instance.expects(:update).with(update_params).returns(false)
158 167
159 post :update, kalibro_configuration_id: compound_metric_configuration.kalibro_configuration_id, id: compound_metric_configuration.id, metric_configuration: metric_configuration_params 168 post :update, kalibro_configuration_id: compound_metric_configuration.kalibro_configuration_id, id: compound_metric_configuration.id, metric_configuration: metric_configuration_params
160 end 169 end
spec/controllers/hotspot_metric_configuration_controller_spec.rb
@@ -2,6 +2,7 @@ require &#39;rails_helper&#39; @@ -2,6 +2,7 @@ require &#39;rails_helper&#39;
2 2
3 describe HotspotMetricConfigurationsController, :type => :controller do 3 describe HotspotMetricConfigurationsController, :type => :controller do
4 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) } 4 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) }
  5 +
5 describe 'create' do 6 describe 'create' do
6 let!(:metric_configuration) { FactoryGirl.build(:hotspot_metric_configuration) } 7 let!(:metric_configuration) { FactoryGirl.build(:hotspot_metric_configuration) }
7 let(:metric_configuration_params) { metric_configuration.to_hash } 8 let(:metric_configuration_params) { metric_configuration.to_hash }
@@ -13,6 +14,7 @@ describe HotspotMetricConfigurationsController, :type =&gt; :controller do @@ -13,6 +14,7 @@ describe HotspotMetricConfigurationsController, :type =&gt; :controller do
13 14
14 context 'when the current user owns the metric configuration' do 15 context 'when the current user owns the metric configuration' do
15 before :each do 16 before :each do
  17 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
16 subject.expects(:kalibro_configuration_owner?).returns true 18 subject.expects(:kalibro_configuration_owner?).returns true
17 end 19 end
18 20
spec/controllers/metric_configurations_controller_spec.rb
@@ -2,6 +2,7 @@ require &#39;rails_helper&#39; @@ -2,6 +2,7 @@ require &#39;rails_helper&#39;
2 2
3 describe MetricConfigurationsController, :type => :controller do 3 describe MetricConfigurationsController, :type => :controller do
4 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) } 4 let(:kalibro_configuration) { FactoryGirl.build(:kalibro_configuration, :with_id) }
  5 +
5 describe 'choose_metric' do 6 describe 'choose_metric' do
6 let(:metric_collector) { FactoryGirl.build(:metric_collector) } 7 let(:metric_collector) { FactoryGirl.build(:metric_collector) }
7 before :each do 8 before :each do
@@ -10,9 +11,9 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -10,9 +11,9 @@ describe MetricConfigurationsController, :type =&gt; :controller do
10 11
11 context 'when adding new metrics' do 12 context 'when adding new metrics' do
12 before :each do 13 before :each do
  14 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
13 subject.expects(:kalibro_configuration_owner?).returns true 15 subject.expects(:kalibro_configuration_owner?).returns true
14 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:all_names).returns([metric_collector]) 16 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:all_names).returns([metric_collector])
15 - KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns(kalibro_configuration)  
16 get :choose_metric, kalibro_configuration_id: kalibro_configuration.id 17 get :choose_metric, kalibro_configuration_id: kalibro_configuration.id
17 end 18 end
18 19
@@ -33,11 +34,12 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -33,11 +34,12 @@ describe MetricConfigurationsController, :type =&gt; :controller do
33 34
34 context 'when the current user owns the kalibro configuration' do 35 context 'when the current user owns the kalibro configuration' do
35 before :each do 36 before :each do
  37 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
36 ReadingGroup.expects(:public_or_owned_by_user).with(user).returns(reading_groups) 38 ReadingGroup.expects(:public_or_owned_by_user).with(user).returns(reading_groups)
37 subject.expects(:kalibro_configuration_owner?).returns true 39 subject.expects(:kalibro_configuration_owner?).returns true
38 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector) 40 KalibroClient::Entities::Processor::MetricCollectorDetails.expects(:find_by_name).with(metric_collector.name).returns(metric_collector)
39 - metric_collector.expects(:find_metric_by_code).with(native_metric.code).returns(native_metric)  
40 - post :new, kalibro_configuration_id: kalibro_configuration.id, metric_code: native_metric.code, metric_collector_name: metric_collector.name 41 + metric_collector.expects(:find_metric_by_name).with(native_metric.name).returns(native_metric)
  42 + get :new, kalibro_configuration_id: kalibro_configuration.id, metric_name: native_metric.name, metric_collector_name: metric_collector.name
41 end 43 end
42 44
43 it { is_expected.to respond_with(:success) } 45 it { is_expected.to respond_with(:success) }
@@ -65,6 +67,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -65,6 +67,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
65 67
66 context 'when the current user owns the metric configuration' do 68 context 'when the current user owns the metric configuration' do
67 before :each do 69 before :each do
  70 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
68 subject.expects(:kalibro_configuration_owner?).returns true 71 subject.expects(:kalibro_configuration_owner?).returns true
69 end 72 end
70 73
@@ -100,6 +103,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -100,6 +103,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
100 let(:kalibro_range) { FactoryGirl.build(:kalibro_range) } 103 let(:kalibro_range) { FactoryGirl.build(:kalibro_range) }
101 104
102 before :each do 105 before :each do
  106 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
103 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group) 107 ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group)
104 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) 108 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)
105 metric_configuration.expects(:kalibro_ranges).returns([kalibro_range]) 109 metric_configuration.expects(:kalibro_ranges).returns([kalibro_range])
@@ -122,6 +126,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -122,6 +126,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
122 126
123 context 'when the user owns the metric configuration' do 127 context 'when the user owns the metric configuration' do
124 before :each do 128 before :each do
  129 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
125 ReadingGroup.expects(:public_or_owned_by_user).with(user).returns(reading_groups) 130 ReadingGroup.expects(:public_or_owned_by_user).with(user).returns(reading_groups)
126 subject.expects(:metric_configuration_owner?).returns(true) 131 subject.expects(:metric_configuration_owner?).returns(true)
127 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) 132 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)
@@ -137,7 +142,6 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -137,7 +142,6 @@ describe MetricConfigurationsController, :type =&gt; :controller do
137 end 142 end
138 143
139 it { is_expected.to redirect_to(kalibro_configurations_path(id: metric_configuration.kalibro_configuration_id)) } 144 it { is_expected.to redirect_to(kalibro_configurations_path(id: metric_configuration.kalibro_configuration_id)) }
140 - it { is_expected.to respond_with(:redirect) }  
141 it { is_expected.to set_flash[:notice].to("You're not allowed to do this operation") } 145 it { is_expected.to set_flash[:notice].to("You're not allowed to do this operation") }
142 end 146 end
143 end 147 end
@@ -153,7 +157,8 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -153,7 +157,8 @@ describe MetricConfigurationsController, :type =&gt; :controller do
153 157
154 describe 'update' do 158 describe 'update' do
155 let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) } 159 let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
156 - let(:metric_configuration_params) { metric_configuration.to_hash } 160 + let(:metric_configuration_params) { metric_configuration.to_hash.except('id', 'metric') }
  161 + let(:update_params) { metric_configuration_params.except('kalibro_configuration_id', 'reading_group_id') }
157 162
158 context 'when the user is logged in' do 163 context 'when the user is logged in' do
159 before do 164 before do
@@ -162,15 +167,20 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -162,15 +167,20 @@ describe MetricConfigurationsController, :type =&gt; :controller do
162 167
163 context 'when user owns the metric configuration' do 168 context 'when user owns the metric configuration' do
164 before :each do 169 before :each do
  170 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
165 subject.expects(:metric_configuration_owner?).returns true 171 subject.expects(:metric_configuration_owner?).returns true
166 end 172 end
167 173
168 context 'with valid fields' do 174 context 'with valid fields' do
169 before :each do 175 before :each do
170 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) 176 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)
171 - MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(true) 177 + MetricConfiguration.any_instance.expects(:update).with(update_params).returns(true)
172 178
173 - post :update, kalibro_configuration_id: metric_configuration.kalibro_configuration_id, id: metric_configuration.id, metric_configuration: metric_configuration_params 179 + post :update,
  180 + kalibro_configuration_id: metric_configuration.kalibro_configuration_id, id: metric_configuration.id,
  181 + metric_configuration: metric_configuration_params,
  182 + metric_collector_name: metric_configuration.metric.metric_collector_name,
  183 + metric_code: metric_configuration.metric.code
174 end 184 end
175 185
176 it { is_expected.to redirect_to(kalibro_configuration_path(id: metric_configuration.kalibro_configuration_id)) } 186 it { is_expected.to redirect_to(kalibro_configuration_path(id: metric_configuration.kalibro_configuration_id)) }
@@ -180,9 +190,13 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -180,9 +190,13 @@ describe MetricConfigurationsController, :type =&gt; :controller do
180 context 'with an invalid field' do 190 context 'with an invalid field' do
181 before :each do 191 before :each do
182 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) 192 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)
183 - MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(false) 193 + MetricConfiguration.any_instance.expects(:update).with(update_params).returns(false)
184 194
185 - post :update, kalibro_configuration_id: metric_configuration.kalibro_configuration_id, id: metric_configuration.id, metric_configuration: metric_configuration_params 195 + post :update,
  196 + kalibro_configuration_id: metric_configuration.kalibro_configuration_id, id: metric_configuration.id,
  197 + metric_configuration: metric_configuration_params,
  198 + metric_collector_name: metric_configuration.metric.metric_collector_name,
  199 + metric_code: metric_configuration.metric.code
186 end 200 end
187 201
188 it { is_expected.to render_template(:edit) } 202 it { is_expected.to render_template(:edit) }
@@ -199,7 +213,6 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -199,7 +213,6 @@ describe MetricConfigurationsController, :type =&gt; :controller do
199 end 213 end
200 end 214 end
201 215
202 -  
203 describe 'destroy' do 216 describe 'destroy' do
204 let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) } 217 let(:metric_configuration) { FactoryGirl.build(:metric_configuration_with_id) }
205 218
@@ -210,6 +223,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do @@ -210,6 +223,7 @@ describe MetricConfigurationsController, :type =&gt; :controller do
210 223
211 context 'when the user owns the configuration' do 224 context 'when the user owns the configuration' do
212 before :each do 225 before :each do
  226 + KalibroConfiguration.expects(:find).with(kalibro_configuration.id).returns kalibro_configuration
213 subject.expects(:metric_configuration_owner?).returns true 227 subject.expects(:metric_configuration_owner?).returns true
214 metric_configuration.expects(:destroy) 228 metric_configuration.expects(:destroy)
215 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) 229 MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration)