Commit 2f2ddebbea79702bc566609a8d03be4ba1588ef8

Authored by Rafael Manzo
1 parent a487b5b9

MezuroConfiguration using KalibroClient class

app/models/mezuro_configuration.rb
1 -require "validators/kalibro_uniqueness_validator.rb"  
2 -  
3 -class MezuroConfiguration < KalibroGatekeeperClient::Entities::Configuration  
4 - include KalibroRecord  
5 -  
6 - attr_accessor :name  
7 - validates :name, presence: true, kalibro_uniqueness: true  
8 -  
9 - def metric_configurations  
10 - MetricConfiguration.metric_configurations_of(self.id)  
11 - end  
12 -end 1 +class MezuroConfiguration < KalibroClient::Configurations::KalibroConfiguration; end
spec/controllers/mezuro_configurations_controller_spec.rb
@@ -27,13 +27,11 @@ describe MezuroConfigurationsController, :type =&gt; :controller do @@ -27,13 +27,11 @@ describe MezuroConfigurationsController, :type =&gt; :controller do
27 27
28 context 'rendering the show' do 28 context 'rendering the show' do
29 before :each do 29 before :each do
30 - MezuroConfiguration.expects(:exists?).returns(true)  
31 -  
32 post :create, :mezuro_configuration => subject_params 30 post :create, :mezuro_configuration => subject_params
33 end 31 end
34 32
35 it 'should redirect to the show view' do 33 it 'should redirect to the show view' do
36 - expect(response).to redirect_to mezuro_configuration_path(mezuro_configuration) 34 + expect(response).to redirect_to mezuro_configuration_path(mezuro_configuration.id)
37 end 35 end
38 end 36 end
39 37
@@ -194,10 +192,8 @@ describe MezuroConfigurationsController, :type =&gt; :controller do @@ -194,10 +192,8 @@ describe MezuroConfigurationsController, :type =&gt; :controller do
194 end 192 end
195 193
196 describe 'update' do 194 describe 'update' do
197 - before do  
198 - @subject = FactoryGirl.build(:mezuro_configuration)  
199 - @subject_params = Hash[FactoryGirl.attributes_for(:mezuro_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  
200 - end 195 + let(:mezuro_configuration) {FactoryGirl.build(:mezuro_configuration)}
  196 + let(:mezuro_configuration_params) {Hash[FactoryGirl.attributes_for(:mezuro_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
201 197
202 context 'when the user is logged in' do 198 context 'when the user is logged in' do
203 before do 199 before do
@@ -209,31 +205,29 @@ describe MezuroConfigurationsController, :type =&gt; :controller do @@ -209,31 +205,29 @@ describe MezuroConfigurationsController, :type =&gt; :controller do
209 @ownership = FactoryGirl.build(:mezuro_configuration_ownership) 205 @ownership = FactoryGirl.build(:mezuro_configuration_ownership)
210 @ownerships = [] 206 @ownerships = []
211 207
212 - @ownerships.expects(:find_by_mezuro_configuration_id).with("#{@subject.id}").returns(@ownership) 208 + @ownerships.expects(:find_by_mezuro_configuration_id).with("#{mezuro_configuration.id}").returns(@ownership)
213 User.any_instance.expects(:mezuro_configuration_ownerships).at_least_once.returns(@ownerships) 209 User.any_instance.expects(:mezuro_configuration_ownerships).at_least_once.returns(@ownerships)
214 end 210 end
215 211
216 context 'with valid fields' do 212 context 'with valid fields' do
217 before :each do 213 before :each do
218 - subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject)  
219 - MezuroConfiguration.any_instance.expects(:update).with(@subject_params).returns(true) 214 + subject.expects(:find_resource).with(MezuroConfiguration, mezuro_configuration.id).returns(mezuro_configuration)
  215 + MezuroConfiguration.any_instance.expects(:update).with(mezuro_configuration_params).returns(true)
220 end 216 end
221 217
222 context 'rendering the show' do 218 context 'rendering the show' do
223 before :each do 219 before :each do
224 - MezuroConfiguration.expects(:exists?).returns(true)  
225 -  
226 - post :update, :id => @subject.id, :mezuro_configuration => @subject_params 220 + post :update, :id => mezuro_configuration.id, :mezuro_configuration => mezuro_configuration_params
227 end 221 end
228 222
229 it 'should redirect to the show view' do 223 it 'should redirect to the show view' do
230 - expect(response).to redirect_to mezuro_configuration_path(@subject) 224 + expect(response).to redirect_to mezuro_configuration_path(mezuro_configuration.id)
231 end 225 end
232 end 226 end
233 227
234 context 'without rendering the show view' do 228 context 'without rendering the show view' do
235 before :each do 229 before :each do
236 - post :update, :id => @subject.id, :mezuro_configuration => @subject_params 230 + post :update, :id => mezuro_configuration.id, :mezuro_configuration => mezuro_configuration_params
237 end 231 end
238 232
239 it { is_expected.to respond_with(:redirect) } 233 it { is_expected.to respond_with(:redirect) }
@@ -242,10 +236,10 @@ describe MezuroConfigurationsController, :type =&gt; :controller do @@ -242,10 +236,10 @@ describe MezuroConfigurationsController, :type =&gt; :controller do
242 236
243 context 'with an invalid field' do 237 context 'with an invalid field' do
244 before :each do 238 before :each do
245 - subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject)  
246 - MezuroConfiguration.any_instance.expects(:update).with(@subject_params).returns(false) 239 + subject.expects(:find_resource).with(MezuroConfiguration, mezuro_configuration.id).returns(mezuro_configuration)
  240 + MezuroConfiguration.any_instance.expects(:update).with(mezuro_configuration_params).returns(false)
247 241
248 - post :update, :id => @subject.id, :mezuro_configuration => @subject_params 242 + post :update, :id => mezuro_configuration.id, :mezuro_configuration => mezuro_configuration_params
249 end 243 end
250 244
251 it { is_expected.to render_template(:edit) } 245 it { is_expected.to render_template(:edit) }
@@ -254,16 +248,16 @@ describe MezuroConfigurationsController, :type =&gt; :controller do @@ -254,16 +248,16 @@ describe MezuroConfigurationsController, :type =&gt; :controller do
254 248
255 context 'when the user does not own the mezuro_configuration' do 249 context 'when the user does not own the mezuro_configuration' do
256 before :each do 250 before :each do
257 - post :update, :id => @subject.id, :mezuro_configuration => @subject_params 251 + post :update, :id => mezuro_configuration.id, :mezuro_configuration => mezuro_configuration_params
258 end 252 end
259 253
260 - it { is_expected.to redirect_to mezuro_configurations_path(@subject.id) } 254 + it { is_expected.to redirect_to mezuro_configurations_path(mezuro_configuration.id) }
261 end 255 end
262 end 256 end
263 257
264 context 'with no user logged in' do 258 context 'with no user logged in' do
265 before :each do 259 before :each do
266 - post :update, :id => @subject.id, :mezuro_configuration => @subject_params 260 + post :update, :id => mezuro_configuration.id, :mezuro_configuration => mezuro_configuration_params
267 end 261 end
268 262
269 it { is_expected.to redirect_to new_user_session_path } 263 it { is_expected.to redirect_to new_user_session_path }
spec/models/mezuro_configuration_spec.rb
@@ -1,73 +0,0 @@ @@ -1,73 +0,0 @@
1 -require 'rails_helper'  
2 -  
3 -describe MezuroConfiguration, :type => :model do  
4 - subject { FactoryGirl.build(:mezuro_configuration) }  
5 - describe 'methods' do  
6 - describe 'persisted?' do  
7 - before :each do  
8 - MezuroConfiguration.expects(:exists?).with(subject.id).returns(false)  
9 - end  
10 -  
11 - it 'should return false' do  
12 - expect(subject.persisted?).to eq(false)  
13 - end  
14 - end  
15 -  
16 - describe 'update' do  
17 - before :each do  
18 - @subject_params = Hash[FactoryGirl.attributes_for(:mezuro_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  
19 - end  
20 -  
21 - context 'with valid attributes' do  
22 - before :each do  
23 - subject.expects(:save).returns(true)  
24 - end  
25 -  
26 - it 'should return true' do  
27 - expect(subject.update(@subject_params)).to eq(true)  
28 - end  
29 - end  
30 -  
31 - context 'with invalid attributes' do  
32 - before :each do  
33 - subject.expects(:save).returns(false)  
34 - end  
35 -  
36 - it 'should return false' do  
37 - expect(subject.update(@subject_params)).to eq(false)  
38 - end  
39 - end  
40 - end  
41 -  
42 - describe 'metric_configurations' do  
43 - subject { FactoryGirl.build(:mezuro_configuration) }  
44 - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }  
45 -  
46 - it 'should call metric_configurations_of on the Metric Configuration model' do  
47 - MetricConfiguration.expects(:metric_configurations_of).with(subject.id).returns([metric_configuration])  
48 -  
49 - expect(subject.metric_configurations).to include(metric_configuration)  
50 - end  
51 - end  
52 - end  
53 -  
54 - describe 'validations' do  
55 - context 'active model validations' do  
56 - before :each do  
57 - MezuroConfiguration.expects(:all).at_least_once.returns([])  
58 - end  
59 - it { is_expected.to validate_presence_of(:name) }  
60 - end  
61 -  
62 - context 'kalibro validations' do  
63 - before :each do  
64 - MezuroConfiguration.expects(:request).returns(42)  
65 - end  
66 -  
67 - it 'should validate uniqueness' do  
68 - KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)  
69 - subject.save  
70 - end  
71 - end  
72 - end  
73 -end