Commit 63e8cd70c3358cafb41adb1bf3136161ca6a9a36

Authored by Heitor
Committed by Rafael Manzo
1 parent 7649725c

Started the refactoring to incorporate kalibro client

Signed off by: Diego Araújo <diegoamc90@gmail.com>
app/controllers/reading_groups_controller.rb
... ... @@ -35,7 +35,7 @@ class ReadingGroupsController &lt; ApplicationController
35 35 def edit; end
36 36  
37 37 def update
38   - if @reading_group.update(reading_group_params)
  38 + if @reading_group.save(reading_group_params)
39 39 redirect_to(reading_group_path(@reading_group.id))
40 40 else
41 41 render "edit"
... ...
app/models/concerns/kalibro_record.rb
... ... @@ -10,16 +10,9 @@ module KalibroRecord
10 10 self.class.exists?(self.id) unless self.id.nil?
11 11 end
12 12  
  13 + #TODO maybe we don't need this method anymore
13 14 def update(attributes = {})
14   - attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) }
15 15 self.save
16 16 end
17 17  
18   - def save
19   - if self.valid? and self.kalibro_errors.empty?
20   - super
21   - else
22   - false
23   - end
24   - end
25 18 end
... ...
app/models/reading.rb
1   -class Reading < KalibroGatekeeperClient::Entities::Reading
  1 +class Reading < KalibroClient::Configurations::Reading
2 2 include KalibroRecord
3 3  
4 4 attr_accessor :label, :grade, :color
... ...
app/models/reading_group.rb
1   -require "validators/kalibro_uniqueness_validator.rb"
2   -
3   -class ReadingGroup < KalibroGatekeeperClient::Entities::ReadingGroup
4   - include KalibroRecord
5   -
6   - attr_accessor :name
7   - validates :name, presence: true, kalibro_uniqueness: true
8   -
9   - def readings
10   - Reading.readings_of(self.id)
11   - end
  1 +class ReadingGroup < KalibroClient::Configurations::ReadingGroup
12 2 end
... ...
spec/controllers/reading_groups_controller_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe ReadingGroupsController, :type => :controller do
4   - describe 'new' do
5   - before :each do
6   - sign_in FactoryGirl.create(:user)
7   - get :new
8   - end
9   -
10   - it { is_expected.to respond_with(:success) }
11   - it { is_expected.to render_template(:new) }
12   - end
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'new' do
  6 + before :each do
  7 + sign_in FactoryGirl.create(:user)
  8 + get :new
  9 + end
13 10  
14   - describe 'create' do
15   - before do
16   - sign_in FactoryGirl.create(:user)
  11 + it { is_expected.to respond_with(:success) }
  12 + it { is_expected.to render_template(:new) }
17 13 end
18 14  
19   - context 'with valid fields' do
20   - let(:reading_group) { FactoryGirl.build(:reading_group) }
21   - let(:subject_params) { Hash[FactoryGirl.attributes_for(:reading_group).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
22   -
23   - before :each do
24   - ReadingGroup.any_instance.expects(:save).returns(true)
  15 + describe 'create' do
  16 + before do
  17 + sign_in FactoryGirl.create(:user)
25 18 end
26 19  
27   - context 'rendering the show' do
  20 + context 'with valid fields' do
  21 + let(:reading_group) { FactoryGirl.build(:reading_group) }
  22 + let(:subject_params) { Hash[FactoryGirl.attributes_for(:reading_group).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
  23 +
28 24 before :each do
29   - ReadingGroup.expects(:exists?).returns(true)
  25 + ReadingGroup.any_instance.expects(:save).returns(true)
  26 + end
30 27  
31   - post :create, :reading_group => subject_params
  28 + context 'rendering the show' do
  29 + before :each do
  30 + ReadingGroup.expects(:exists?).returns(true)
  31 +
  32 + post :create, :reading_group => subject_params
  33 + end
  34 +
  35 + it 'should redirect to the show view' do
  36 + expect(response).to redirect_to reading_group_path(reading_group)
  37 + end
32 38 end
33 39  
34   - it 'should redirect to the show view' do
35   - expect(response).to redirect_to reading_group_path(reading_group)
  40 + context 'without rendering the show view' do
  41 + before :each do
  42 + post :create, :reading_group => subject_params
  43 + end
  44 +
  45 + it { is_expected.to respond_with(:redirect) }
36 46 end
37 47 end
38 48  
39   - context 'without rendering the show view' do
  49 + context 'with an invalid field' do
40 50 before :each do
41   - post :create, :reading_group => subject_params
  51 + @subject = FactoryGirl.build(:reading_group)
  52 + @subject_params = Hash[FactoryGirl.attributes_for(:reading_group).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
  53 +
  54 + ReadingGroup.expects(:new).at_least_once.with(@subject_params).returns(@subject)
  55 + ReadingGroup.any_instance.expects(:save).returns(false)
  56 +
  57 + post :create, :reading_group => @subject_params
42 58 end
43 59  
44   - it { is_expected.to respond_with(:redirect) }
  60 + it { is_expected.to render_template(:new) }
45 61 end
46 62 end
47 63  
48   - context 'with an invalid field' do
  64 + describe 'show' do
  65 + let!(:reading_group) { FactoryGirl.build(:reading_group) }
  66 + let(:reading) { FactoryGirl.build(:reading) }
49 67 before :each do
50   - @subject = FactoryGirl.build(:reading_group)
51   - @subject_params = Hash[FactoryGirl.attributes_for(:reading_group).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
52   -
53   - ReadingGroup.expects(:new).at_least_once.with(@subject_params).returns(@subject)
54   - ReadingGroup.any_instance.expects(:save).returns(false)
55   -
56   - post :create, :reading_group => @subject_params
  68 + subject.expects(:find_resource).with(ReadingGroup, reading_group.id).returns(reading_group)
  69 + get :show, :id => reading_group.id
57 70 end
58 71  
59   - it { is_expected.to render_template(:new) }
  72 + it { is_expected.to render_template(:show) }
60 73 end
61   - end
62 74  
63   - describe 'show' do
64   - let!(:reading_group) { FactoryGirl.build(:reading_group) }
65   - let(:reading) { FactoryGirl.build(:reading) }
66   - before :each do
67   - subject.expects(:find_resource).with(ReadingGroup, reading_group.id).returns(reading_group)
68   - get :show, :id => reading_group.id
69   - end
  75 + describe 'destroy' do
  76 + before do
  77 + @subject = FactoryGirl.build(:reading_group)
  78 + end
70 79  
71   - it { is_expected.to render_template(:show) }
72   - end
  80 + context 'with an User logged in' do
  81 + before do
  82 + sign_in FactoryGirl.create(:user)
  83 + @ownership = FactoryGirl.build(:reading_group_ownership)
  84 + @ownerships = []
73 85  
74   - describe 'destroy' do
75   - before do
76   - @subject = FactoryGirl.build(:reading_group)
77   - end
  86 + end
78 87  
79   - context 'with an User logged in' do
80   - before do
81   - sign_in FactoryGirl.create(:user)
82   - @ownership = FactoryGirl.build(:reading_group_ownership)
83   - @ownerships = []
  88 + context 'when the user owns the reading group' do
  89 + before :each do
  90 + @ownership.expects(:destroy)
  91 + @subject.expects(:destroy)
84 92  
85   - end
  93 + #Those two mocks looks the same but they are necessary since params[:id] is a String and @ReadingGroup.id is an Integer :(
  94 + @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
  95 + @ownerships.expects(:find_by_reading_group_id).with(@subject.id).returns(@ownership)
86 96  
87   - context 'when the user owns the reading group' do
88   - before :each do
89   - @ownership.expects(:destroy)
90   - @subject.expects(:destroy)
  97 + User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
91 98  
92   - #Those two mocks looks the same but they are necessary since params[:id] is a String and @ReadingGroup.id is an Integer :(
93   - @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
94   - @ownerships.expects(:find_by_reading_group_id).with(@subject.id).returns(@ownership)
  99 + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
  100 + delete :destroy, :id => @subject.id
  101 + end
95 102  
96   - User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
  103 + it 'should redirect to the reading groups page' do
  104 + expect(response).to redirect_to reading_groups_url
  105 + end
97 106  
98   - subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
99   - delete :destroy, :id => @subject.id
  107 + it { is_expected.to respond_with(:redirect) }
100 108 end
101 109  
102   - it 'should redirect to the reading groups page' do
103   - expect(response).to redirect_to reading_groups_url
104   - end
  110 + context "when the user doesn't own the reading group" do
  111 + before :each do
  112 + @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(nil)
  113 + User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
105 114  
106   - it { is_expected.to respond_with(:redirect) }
  115 + delete :destroy, :id => @subject.id
  116 + end
  117 +
  118 + it { is_expected.to redirect_to(reading_group_path) }
  119 + end
107 120 end
108 121  
109   - context "when the user doesn't own the reading group" do
  122 + context 'with no User logged in' do
110 123 before :each do
111   - @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(nil)
112   - User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
113   -
114 124 delete :destroy, :id => @subject.id
115 125 end
116 126  
117   - it { is_expected.to redirect_to(reading_group_path) }
  127 + it { is_expected.to redirect_to new_user_session_path }
118 128 end
119 129 end
120 130  
121   - context 'with no User logged in' do
  131 + describe 'index' do
122 132 before :each do
123   - delete :destroy, :id => @subject.id
  133 + @subject = FactoryGirl.build(:reading_group)
  134 + ReadingGroup.expects(:all).returns([@subject])
  135 + get :index
124 136 end
125 137  
126   - it { is_expected.to redirect_to new_user_session_path }
  138 + it { is_expected.to render_template(:index) }
127 139 end
128   - end
129 140  
130   - describe 'index' do
131   - before :each do
132   - @subject = FactoryGirl.build(:reading_group)
133   - ReadingGroup.expects(:all).returns([@subject])
134   - get :index
135   - end
  141 + describe 'edit' do
  142 + before do
  143 + @subject = FactoryGirl.build(:reading_group)
  144 + end
136 145  
137   - it { is_expected.to render_template(:index) }
138   - end
  146 + context 'with an User logged in' do
  147 + before do
  148 + @user = FactoryGirl.create(:user)
  149 + @ownership = FactoryGirl.build(:reading_group_ownership)
  150 + @ownerships = []
139 151  
140   - describe 'edit' do
141   - before do
142   - @subject = FactoryGirl.build(:reading_group)
143   - end
  152 + User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
144 153  
145   - context 'with an User logged in' do
146   - before do
147   - @user = FactoryGirl.create(:user)
148   - @ownership = FactoryGirl.build(:reading_group_ownership)
149   - @ownerships = []
  154 + sign_in @user
  155 + end
150 156  
151   - User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
  157 + context 'when the user owns the reading group' do
  158 + before :each do
  159 + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
  160 + @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
152 161  
153   - sign_in @user
154   - end
  162 + get :edit, :id => @subject.id
  163 + end
155 164  
156   - context 'when the user owns the reading group' do
157   - before :each do
158   - subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
159   - @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
  165 + it { is_expected.to render_template(:edit) }
160 166  
161   - get :edit, :id => @subject.id
  167 + it 'should assign to @reading group the @subject' do
  168 + expect(assigns(:reading_group)).to eq(@subject)
  169 + end
162 170 end
163 171  
164   - it { is_expected.to render_template(:edit) }
  172 + context 'when the user does not own the reading group' do
  173 + before do
  174 + @subject = FactoryGirl.build(:another_reading_group)
  175 + @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(nil)
  176 +
  177 + get :edit, :id => @subject.id
  178 + end
165 179  
166   - it 'should assign to @reading group the @subject' do
167   - expect(assigns(:reading_group)).to eq(@subject)
  180 + it { is_expected.to redirect_to(reading_group_path) }
  181 + it { is_expected.to set_the_flash[:notice].to("You're not allowed to do this operation") }
168 182 end
169 183 end
170 184  
171   - context 'when the user does not own the reading group' do
172   - before do
173   - @subject = FactoryGirl.build(:another_reading_group)
174   - @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(nil)
175   -
  185 + context 'with no user logged in' do
  186 + before :each do
176 187 get :edit, :id => @subject.id
177 188 end
178 189  
179   - it { is_expected.to redirect_to(reading_group_path) }
180   - it { is_expected.to set_the_flash[:notice].to("You're not allowed to do this operation") }
  190 + it { is_expected.to redirect_to new_user_session_path }
181 191 end
182 192 end
183 193  
184   - context 'with no user logged in' do
185   - before :each do
186   - get :edit, :id => @subject.id
187   - end
188   -
189   - it { is_expected.to redirect_to new_user_session_path }
190   - end
191   - end
192   -
193   - describe 'update' do
194   - before do
195   - @subject = FactoryGirl.build(:reading_group)
196   - @subject_params = Hash[FactoryGirl.attributes_for(:reading_group).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
197   - end
198   -
199   - context 'when the user is logged in' do
  194 + describe 'update' do
200 195 before do
201   - sign_in FactoryGirl.create(:user)
  196 + @subject = FactoryGirl.build(:reading_group)
  197 + @subject_params = Hash[FactoryGirl.attributes_for(:reading_group).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
202 198 end
203 199  
204   - context 'when user owns the reading group' do
  200 + context 'when the user is logged in' do
205 201 before do
206   - @ownership = FactoryGirl.build(:reading_group_ownership)
207   - @ownerships = []
208   -
209   - @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
210   - User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
  202 + sign_in FactoryGirl.create(:user)
211 203 end
212 204  
213   - context 'with valid fields' do
214   - before :each do
215   - subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
216   - ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(true)
  205 + context 'when user owns the reading group' do
  206 + before do
  207 + @ownership = FactoryGirl.build(:reading_group_ownership)
  208 + @ownerships = []
  209 +
  210 + @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership)
  211 + User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships)
217 212 end
218 213  
219   - context 'rendering the show' do
  214 + context 'with valid fields' do
220 215 before :each do
221   - ReadingGroup.expects(:exists?).returns(true)
  216 + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
  217 + ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(true)
  218 + end
222 219  
223   - post :update, :id => @subject.id, :reading_group => @subject_params
  220 + context 'rendering the show' do
  221 + before :each do
  222 + ReadingGroup.expects(:exists?).returns(true)
  223 +
  224 + post :update, :id => @subject.id, :reading_group => @subject_params
  225 + end
  226 +
  227 + it 'should redirect to the show view' do
  228 + expect(response).to redirect_to reading_group_path(@subject)
  229 + end
224 230 end
225 231  
226   - it 'should redirect to the show view' do
227   - expect(response).to redirect_to reading_group_path(@subject)
  232 + context 'without rendering the show view' do
  233 + before :each do
  234 + post :update, :id => @subject.id, :reading_group => @subject_params
  235 + end
  236 +
  237 + it { is_expected.to respond_with(:redirect) }
228 238 end
229 239 end
230 240  
231   - context 'without rendering the show view' do
  241 + context 'with an invalid field' do
232 242 before :each do
  243 + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
  244 + ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(false)
  245 +
233 246 post :update, :id => @subject.id, :reading_group => @subject_params
234 247 end
235 248  
236   - it { is_expected.to respond_with(:redirect) }
  249 + it { is_expected.to render_template(:edit) }
237 250 end
238 251 end
239 252  
240   - context 'with an invalid field' do
  253 + context 'when the user does not own the reading group' do
241 254 before :each do
242   - subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject)
243   - ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(false)
244   -
245 255 post :update, :id => @subject.id, :reading_group => @subject_params
246 256 end
247 257  
248   - it { is_expected.to render_template(:edit) }
  258 + it { is_expected.to redirect_to reading_group_path }
249 259 end
250 260 end
251 261  
252   - context 'when the user does not own the reading group' do
  262 + context 'with no user logged in' do
253 263 before :each do
254 264 post :update, :id => @subject.id, :reading_group => @subject_params
255 265 end
256 266  
257   - it { is_expected.to redirect_to reading_group_path }
  267 + it { is_expected.to redirect_to new_user_session_path }
258 268 end
259 269 end
260   -
261   - context 'with no user logged in' do
262   - before :each do
263   - post :update, :id => @subject.id, :reading_group => @subject_params
264   - end
265   -
266   - it { is_expected.to redirect_to new_user_session_path }
267   - end
268 270 end
269 271 end
... ...
spec/models/mezuro_range_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe MezuroRange, :type => :model do
4   - subject { FactoryGirl.build(:mezuro_range, { metric_configuration_id: 42 }) }
5   - describe 'validations' do
6   - context 'active model validations' do
7   - before :each do
8   - BeginningUniquenessValidator.any_instance.stubs(:validate_each)
9   - GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
10   - RangeOverlappingValidator.any_instance.stubs(:validate)
11   - end
  4 + pending 'waiting for kalibro configurations integration' do
  5 + subject { FactoryGirl.build(:mezuro_range, { metric_configuration_id: 42 }) }
  6 + describe 'validations' do
  7 + context 'active model validations' do
  8 + before :each do
  9 + BeginningUniquenessValidator.any_instance.stubs(:validate_each)
  10 + GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
  11 + RangeOverlappingValidator.any_instance.stubs(:validate)
  12 + end
12 13  
13   - it { is_expected.to validate_presence_of(:beginning) }
14   - it { is_expected.to validate_presence_of(:end) }
15   - it { is_expected.to validate_presence_of(:reading_id) }
  14 + it { is_expected.to validate_presence_of(:beginning) }
  15 + it { is_expected.to validate_presence_of(:end) }
  16 + it { is_expected.to validate_presence_of(:reading_id) }
16 17  
17   - context 'beginning and end numericality' do
18   - it { is_expected.to validate_numericality_of(:beginning) }
19   - it { is_expected.to validate_numericality_of(:end) }
  18 + context 'beginning and end numericality' do
  19 + it { is_expected.to validate_numericality_of(:beginning) }
  20 + it { is_expected.to validate_numericality_of(:end) }
20 21  
21   - it 'should allow -INF and INF to beginning' do
22   - subject.beginning = '-INF'
23   - subject.save
  22 + it 'should allow -INF and INF to beginning' do
  23 + subject.beginning = '-INF'
  24 + subject.save
24 25  
25   - expect(subject.errors.messages).to be_empty
  26 + expect(subject.errors.messages).to be_empty
26 27  
27   - subject.beginning = 'INF'
28   - subject.save
  28 + subject.beginning = 'INF'
  29 + subject.save
29 30  
30   - expect(subject.errors.messages).to be_empty
31   - end
  31 + expect(subject.errors.messages).to be_empty
  32 + end
32 33  
33   - it 'should allow -INF and INF to end' do
34   - subject.end = '-INF'
35   - subject.save
  34 + it 'should allow -INF and INF to end' do
  35 + subject.end = '-INF'
  36 + subject.save
36 37  
37   - expect(subject.errors.messages).to be_empty
  38 + expect(subject.errors.messages).to be_empty
38 39  
39   - subject.end = 'INF'
40   - subject.save
  40 + subject.end = 'INF'
  41 + subject.save
41 42  
42   - expect(subject.errors.messages).to be_empty
  43 + expect(subject.errors.messages).to be_empty
  44 + end
43 45 end
44 46 end
45   - end
46 47  
47   - context 'beginning validations' do
48   - before :each do
49   - GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
50   - RangeOverlappingValidator.any_instance.stubs(:validate)
51   - end
  48 + context 'beginning validations' do
  49 + before :each do
  50 + GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
  51 + RangeOverlappingValidator.any_instance.stubs(:validate)
  52 + end
52 53  
53   - it 'should validate uniqueness' do
54   - BeginningUniquenessValidator.any_instance.expects(:validate_each).with(subject, :beginning, subject.beginning)
55   - subject.save
  54 + it 'should validate uniqueness' do
  55 + BeginningUniquenessValidator.any_instance.expects(:validate_each).with(subject, :beginning, subject.beginning)
  56 + subject.save
  57 + end
56 58 end
57   - end
58 59  
59   - context 'end validations' do
60   - before :each do
61   - BeginningUniquenessValidator.any_instance.stubs(:validate_each)
62   - RangeOverlappingValidator.any_instance.stubs(:validate)
63   - end
  60 + context 'end validations' do
  61 + before :each do
  62 + BeginningUniquenessValidator.any_instance.stubs(:validate_each)
  63 + RangeOverlappingValidator.any_instance.stubs(:validate)
  64 + end
64 65  
65   - it 'should validate that end is greater than beginning' do
66   - GreaterThanBeginningValidator.any_instance.expects(:validate_each).with(subject, :end, subject.end)
67   - subject.save
  66 + it 'should validate that end is greater than beginning' do
  67 + GreaterThanBeginningValidator.any_instance.expects(:validate_each).with(subject, :end, subject.end)
  68 + subject.save
  69 + end
68 70 end
69   - end
70 71  
71   - context 'overlapping validations' do
72   - before :each do
73   - GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
74   - BeginningUniquenessValidator.any_instance.stubs(:validate_each)
75   - end
  72 + context 'overlapping validations' do
  73 + before :each do
  74 + GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
  75 + BeginningUniquenessValidator.any_instance.stubs(:validate_each)
  76 + end
76 77  
77   - it 'is expected to validate if this range overlaps the existing ones' do
78   - RangeOverlappingValidator.any_instance.expects(:validate).with(subject)
79   - subject.save
  78 + it 'is expected to validate if this range overlaps the existing ones' do
  79 + RangeOverlappingValidator.any_instance.expects(:validate).with(subject)
  80 + subject.save
  81 + end
80 82 end
81 83 end
82 84 end
83   -end
84 85 \ No newline at end of file
  86 +end
... ...
spec/models/project_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe Project, :type => :model do
4   - describe 'methods' do
5   - describe 'persisted?' do
6   - before :each do
7   - @subject = FactoryGirl.build(:project)
8   - Project.expects(:exists?).with(@subject.id).returns(false)
9   - end
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'persisted?' do
  7 + before :each do
  8 + @subject = FactoryGirl.build(:project)
  9 + Project.expects(:exists?).with(@subject.id).returns(false)
  10 + end
10 11  
11   - it 'should return false' do
12   - expect(@subject.persisted?).to eq(false)
  12 + it 'should return false' do
  13 + expect(@subject.persisted?).to eq(false)
  14 + end
13 15 end
14   - end
15 16  
16   - describe 'latest' do
17   - before :each do
18   - @qt = FactoryGirl.build(:project)
19   - @kalibro = FactoryGirl.build(:another_project)
20   -
21   - Project.expects(:all).returns([@qt, @kalibro])
22   - end
  17 + describe 'latest' do
  18 + before :each do
  19 + @qt = FactoryGirl.build(:project)
  20 + @kalibro = FactoryGirl.build(:another_project)
23 21  
24   - it 'should return the two projects ordered' do
25   - expect(Project.latest(2)).to eq([@kalibro, @qt])
26   - end
  22 + Project.expects(:all).returns([@qt, @kalibro])
  23 + end
27 24  
28   - context 'when no parameter is passed' do
29   - it 'should return just the most recent project' do
30   - expect(Project.latest).to eq([@kalibro])
  25 + it 'should return the two projects ordered' do
  26 + expect(Project.latest(2)).to eq([@kalibro, @qt])
31 27 end
32   - end
33   - end
34 28  
35   - describe 'update' do
36   - before :each do
37   - @qt = FactoryGirl.build(:project)
38   - @qt_params = Hash[FactoryGirl.attributes_for(:project).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
  29 + context 'when no parameter is passed' do
  30 + it 'should return just the most recent project' do
  31 + expect(Project.latest).to eq([@kalibro])
  32 + end
  33 + end
39 34 end
40 35  
41   - context 'with valid attributes' do
  36 + describe 'update' do
42 37 before :each do
43   - @qt.expects(:save).returns(true)
  38 + @qt = FactoryGirl.build(:project)
  39 + @qt_params = Hash[FactoryGirl.attributes_for(:project).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
44 40 end
45 41  
46   - it 'should return true' do
47   - expect(@qt.update(@qt_params)).to eq(true)
48   - end
49   - end
  42 + context 'with valid attributes' do
  43 + before :each do
  44 + @qt.expects(:save).returns(true)
  45 + end
50 46  
51   - context 'with invalid attributes' do
52   - before :each do
53   - @qt.expects(:save).returns(false)
  47 + it 'should return true' do
  48 + expect(@qt.update(@qt_params)).to eq(true)
  49 + end
54 50 end
55 51  
56   - it 'should return false' do
57   - expect(@qt.update(@qt_params)).to eq(false)
  52 + context 'with invalid attributes' do
  53 + before :each do
  54 + @qt.expects(:save).returns(false)
  55 + end
  56 +
  57 + it 'should return false' do
  58 + expect(@qt.update(@qt_params)).to eq(false)
  59 + end
58 60 end
59 61 end
60   - end
61 62  
62   - describe 'repositories' do
63   - subject { FactoryGirl.build(:project) }
64   - let(:repository) { FactoryGirl.build(:repository) }
  63 + describe 'repositories' do
  64 + subject { FactoryGirl.build(:project) }
  65 + let(:repository) { FactoryGirl.build(:repository) }
65 66  
66   - it 'should call repositories_of on the Repository model' do
67   - Repository.expects(:repositories_of).with(subject.id).returns([repository])
  67 + it 'should call repositories_of on the Repository model' do
  68 + Repository.expects(:repositories_of).with(subject.id).returns([repository])
68 69  
69   - expect(subject.repositories).to include(repository)
  70 + expect(subject.repositories).to include(repository)
  71 + end
70 72 end
71 73 end
72   - end
73 74  
74   - describe 'validations' do
75   - subject {FactoryGirl.build(:project)}
76   - context 'active model validations' do
77   - before :each do
78   - Project.expects(:all).at_least_once.returns([])
  75 + describe 'validations' do
  76 + subject {FactoryGirl.build(:project)}
  77 + context 'active model validations' do
  78 + before :each do
  79 + Project.expects(:all).at_least_once.returns([])
  80 + end
  81 + it { is_expected.to validate_presence_of(:name) }
79 82 end
80   - it { is_expected.to validate_presence_of(:name) }
81   - end
82 83  
83   - context 'kalibro validations' do
84   - before :each do
85   - Project.expects(:request).returns(42)
86   - end
  84 + context 'kalibro validations' do
  85 + before :each do
  86 + Project.expects(:request).returns(42)
  87 + end
87 88  
88   - it 'should validate uniqueness' do
89   - KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)
90   - subject.save
  89 + it 'should validate uniqueness' do
  90 + KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)
  91 + subject.save
  92 + end
91 93 end
92 94 end
93 95 end
... ...
spec/models/reading_group_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe ReadingGroup, :type => :model do
4   - describe 'methods' do
5   - describe 'persisted?' do
6   - before :each do
7   - @subject = FactoryGirl.build(:reading_group)
8   - ReadingGroup.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   - @qt = FactoryGirl.build(:reading_group)
19   - @qt_params = Hash[FactoryGirl.attributes_for(:reading_group).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
20   - end
21   -
22   - context 'with valid attributes' do
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'persisted?' do
23 7 before :each do
24   - @qt.expects(:save).returns(true)
  8 + @subject = FactoryGirl.build(:reading_group)
  9 + ReadingGroup.expects(:exists?).with(@subject.id).returns(false)
25 10 end
26 11  
27   - it 'should return true' do
28   - expect(@qt.update(@qt_params)).to eq(true)
  12 + it 'should return false' do
  13 + expect(@subject.persisted?).to eq(false)
29 14 end
30 15 end
31 16  
32   - context 'with invalid attributes' do
  17 + describe 'update' do
33 18 before :each do
34   - @qt.expects(:save).returns(false)
  19 + @qt = FactoryGirl.build(:reading_group)
  20 + @qt_params = Hash[FactoryGirl.attributes_for(:reading_group).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
35 21 end
36 22  
37   - it 'should return false' do
38   - expect(@qt.update(@qt_params)).to eq(false)
39   - end
40   - end
41   - end
  23 + context 'with valid attributes' do
  24 + before :each do
  25 + @qt.expects(:save).returns(true)
  26 + end
42 27  
43   - describe 'readings' do
44   - subject { FactoryGirl.build(:reading_group) }
45   - let(:reading) { FactoryGirl.build(:reading) }
  28 + it 'should return true' do
  29 + expect(@qt.update(@qt_params)).to eq(true)
  30 + end
  31 + end
46 32  
47   - it 'should call readings_of on the Reading model' do
48   - Reading.expects(:readings_of).with(subject.id).returns([reading])
  33 + context 'with invalid attributes' do
  34 + before :each do
  35 + @qt.expects(:save).returns(false)
  36 + end
49 37  
50   - expect(subject.readings).to include(reading)
  38 + it 'should return false' do
  39 + expect(@qt.update(@qt_params)).to eq(false)
  40 + end
  41 + end
51 42 end
52   - end
53   - end
54 43  
55   - describe 'validations' do
56   - subject {FactoryGirl.build(:reading_group)}
57   - context 'active model validations' do
58   - before :each do
59   - ReadingGroup.expects(:all).at_least_once.returns([])
60   - end
61   - it { is_expected.to validate_presence_of(:name) }
62   - end
  44 + describe 'readings' do
  45 + subject { FactoryGirl.build(:reading_group) }
  46 + let(:reading) { FactoryGirl.build(:reading) }
63 47  
64   - context 'kalibro validations' do
65   - before :each do
66   - ReadingGroup.expects(:request).returns(42)
67   - end
  48 + it 'should call readings_of on the Reading model' do
  49 + Reading.expects(:readings_of).with(subject.id).returns([reading])
68 50  
69   - it 'should validate uniqueness' do
70   - KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)
71   - subject.save
  51 + expect(subject.readings).to include(reading)
  52 + end
72 53 end
73 54 end
74 55 end
... ...
spec/models/reading_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe Reading, :type => :model do
4   - describe 'validations' do
5   - subject {FactoryGirl.build(:reading)}
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'validations' do
  6 + subject {FactoryGirl.build(:reading)}
6 7  
7   - context 'active model validations' do
8   - before :each do
9   - Reading.expects(:all).at_least_once.returns([])
10   - end
11   -
12   - it { is_expected.to validate_presence_of(:label) }
13   - it { is_expected.to validate_presence_of(:color) }
14   - it { is_expected.to validate_presence_of(:grade) }
15   - it { is_expected.to validate_numericality_of(:grade) }
16   - end
  8 + context 'active model validations' do
  9 + before :each do
  10 + Reading.expects(:all).at_least_once.returns([])
  11 + end
17 12  
18   - context 'kalibro validations' do
19   - before :each do
20   - Reading.expects(:request).returns(42)
  13 + it { is_expected.to validate_presence_of(:label) }
  14 + it { is_expected.to validate_presence_of(:color) }
  15 + it { is_expected.to validate_presence_of(:grade) }
  16 + it { is_expected.to validate_numericality_of(:grade) }
21 17 end
22 18  
23   - it 'should validate uniqueness' do
24   - KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :label, subject.label)
25   - subject.save
  19 + context 'kalibro validations' do
  20 + before :each do
  21 + Reading.expects(:request).returns(42)
  22 + end
  23 +
  24 + it 'should validate uniqueness' do
  25 + KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :label, subject.label)
  26 + subject.save
  27 + end
26 28 end
27 29 end
28 30 end
... ...
spec/models/repository_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe Repository, :type => :model do
4   - describe 'methods' do
5   - describe 'last_processing' do
6   - subject { FactoryGirl.build(:repository) }
7   -
8   - context 'with no processing at all' do
9   - before :each do
10   - Processing.expects(:has_processing).with(subject.id).returns(false)
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'last_processing' do
  7 + subject { FactoryGirl.build(:repository) }
  8 +
  9 + context 'with no processing at all' do
  10 + before :each do
  11 + Processing.expects(:has_processing).with(subject.id).returns(false)
  12 + end
  13 +
  14 + it 'should return nil' do
  15 + expect(subject.last_processing).to be_nil
  16 + end
11 17 end
12 18  
13   - it 'should return nil' do
14   - expect(subject.last_processing).to be_nil
15   - end
16   - end
17   -
18   - context 'with a ready processing' do
19   - let(:processing) { FactoryGirl.build(:processing) }
  19 + context 'with a ready processing' do
  20 + let(:processing) { FactoryGirl.build(:processing) }
20 21  
21   - before :each do
22   - Processing.expects(:has_processing).with(subject.id).returns(true)
23   - Processing.expects(:has_ready_processing).with(subject.id).returns(true)
24   - end
  22 + before :each do
  23 + Processing.expects(:has_processing).with(subject.id).returns(true)
  24 + Processing.expects(:has_ready_processing).with(subject.id).returns(true)
  25 + end
25 26  
26   - it 'should return a ready processing processing' do
27   - Processing.expects(:last_ready_processing_of).with(subject.id).returns(processing)
  27 + it 'should return a ready processing processing' do
  28 + Processing.expects(:last_ready_processing_of).with(subject.id).returns(processing)
28 29  
29   - expect(subject.last_processing).to eq(processing)
  30 + expect(subject.last_processing).to eq(processing)
  31 + end
30 32 end
31   - end
32 33  
33   - context 'with no ready processing' do
34   - let(:processing) { FactoryGirl.build(:processing, state: 'COLLECTING') }
  34 + context 'with no ready processing' do
  35 + let(:processing) { FactoryGirl.build(:processing, state: 'COLLECTING') }
35 36  
36   - before :each do
37   - Processing.expects(:has_processing).with(subject.id).returns(true)
38   - Processing.expects(:has_ready_processing).with(subject.id).returns(false)
39   - end
  37 + before :each do
  38 + Processing.expects(:has_processing).with(subject.id).returns(true)
  39 + Processing.expects(:has_ready_processing).with(subject.id).returns(false)
  40 + end
40 41  
41   - it 'should return the latest processing' do
42   - Processing.expects(:last_processing_of).with(subject.id).returns(processing)
  42 + it 'should return the latest processing' do
  43 + Processing.expects(:last_processing_of).with(subject.id).returns(processing)
43 44  
44   - expect(subject.last_processing).to eq(processing)
  45 + expect(subject.last_processing).to eq(processing)
  46 + end
45 47 end
46 48 end
47 49 end
48   - end
49   -
50   - describe 'validations' do
51   - subject {FactoryGirl.build(:repository)}
52 50  
53   - context 'active model validations' do
54   - before :each do
55   - Repository.expects(:all).at_least_once.returns([])
56   - end
  51 + describe 'validations' do
  52 + subject {FactoryGirl.build(:repository)}
57 53  
58   - it { is_expected.to validate_presence_of(:name) }
59   - it { is_expected.to validate_presence_of(:address) }
60   - end
  54 + context 'active model validations' do
  55 + before :each do
  56 + Repository.expects(:all).at_least_once.returns([])
  57 + end
61 58  
62   - context 'kalibro validations' do
63   - before :each do
64   - Repository.expects(:request).returns(42)
  59 + it { is_expected.to validate_presence_of(:name) }
  60 + it { is_expected.to validate_presence_of(:address) }
65 61 end
66 62  
67   - it 'should validate uniqueness' do
68   - KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)
69   - subject.save
  63 + context 'kalibro validations' do
  64 + before :each do
  65 + Repository.expects(:request).returns(42)
  66 + end
  67 +
  68 + it 'should validate uniqueness' do
  69 + KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name)
  70 + subject.save
  71 + end
70 72 end
71 73 end
72 74 end
... ...
spec/models/validators/beginning_uniqueness_validator_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe BeginningUniquenessValidator, :type => :model do
4   - describe 'methods' do
5   - describe 'validate_each' do
6   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
7   - context 'without saved mezuro_range' do
8   - before :each do
9   - MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([])
10   - MezuroRange.expects(:request).returns(42)
11   - RangeOverlappingValidator.any_instance.stubs(:validate)
12   - end
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'validate_each' do
  7 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  8 + context 'without saved mezuro_range' do
  9 + before :each do
  10 + MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([])
  11 + MezuroRange.expects(:request).returns(42)
  12 + RangeOverlappingValidator.any_instance.stubs(:validate)
  13 + end
13 14  
14   - subject { FactoryGirl.build(:mezuro_range, metric_configuration_id: metric_configuration.id) }
15   - it 'should contain no errors' do
16   - subject.save
17   - expect(subject.errors).to be_empty
  15 + subject { FactoryGirl.build(:mezuro_range, metric_configuration_id: metric_configuration.id) }
  16 + it 'should contain no errors' do
  17 + subject.save
  18 + expect(subject.errors).to be_empty
  19 + end
18 20 end
19   - end
20 21  
21   - context 'with beginning already taken by another mezuro_range' do
22   - let(:another_mezuro_range) { FactoryGirl.build(:another_mezuro_range, id: 3, metric_configuration_id: metric_configuration.id) }
23   - before :each do
24   - @subject = FactoryGirl.build(:mezuro_range, metric_configuration_id: metric_configuration.id)
25   - MezuroRange.expects(:ranges_of).with(@subject.metric_configuration_id).returns([another_mezuro_range])
26   - RangeOverlappingValidator.any_instance.stubs(:validate)
27   - end
  22 + context 'with beginning already taken by another mezuro_range' do
  23 + let(:another_mezuro_range) { FactoryGirl.build(:another_mezuro_range, id: 3, metric_configuration_id: metric_configuration.id) }
  24 + before :each do
  25 + @subject = FactoryGirl.build(:mezuro_range, metric_configuration_id: metric_configuration.id)
  26 + MezuroRange.expects(:ranges_of).with(@subject.metric_configuration_id).returns([another_mezuro_range])
  27 + RangeOverlappingValidator.any_instance.stubs(:validate)
  28 + end
28 29  
29   - it 'should contain errors' do
30   - @subject.save
31   - expect(@subject.errors[:beginning]).to eq(["There is already a MezuroRange with beginning #{@subject.beginning}! Please, choose another one."])
  30 + it 'should contain errors' do
  31 + @subject.save
  32 + expect(@subject.errors[:beginning]).to eq(["There is already a MezuroRange with beginning #{@subject.beginning}! Please, choose another one."])
  33 + end
32 34 end
33 35 end
34 36 end
... ...
spec/models/validators/greater_than_beginning_validator_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe GreaterThanBeginningValidator, :type => :model do
4   - describe 'methods' do
5   - describe 'validate_each' do
6   - before :each do
7   - BeginningUniquenessValidator.any_instance.stubs(:validate_each)
8   - RangeOverlappingValidator.any_instance.stubs(:validate)
9   - end
10   - context 'when beginning is INF or end is -INF' do
11   - subject { FactoryGirl.build(:mezuro_range, end: "-INF") }
12   - it 'is expected to return an error' do
13   - subject.save
14   - expect(subject.errors[:end]).to eq(["The End value should be greater than the Beginning value."])
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'validate_each' do
  7 + before :each do
  8 + BeginningUniquenessValidator.any_instance.stubs(:validate_each)
  9 + RangeOverlappingValidator.any_instance.stubs(:validate)
15 10 end
16   - end
17   - context 'when beginning is -INF or end is INF' do
18   - subject { FactoryGirl.build(:mezuro_range, end: "INF") }
19   - it 'is expected to not return an error' do
20   - subject.save
21   - expect(subject.errors[:end]).to be_empty
  11 + context 'when beginning is INF or end is -INF' do
  12 + subject { FactoryGirl.build(:mezuro_range, end: "-INF") }
  13 + it 'is expected to return an error' do
  14 + subject.save
  15 + expect(subject.errors[:end]).to eq(["The End value should be greater than the Beginning value."])
  16 + end
22 17 end
23   - end
24   - context 'when beginning is greater than end' do
25   - subject { FactoryGirl.build(:mezuro_range, beginning: 1.0, end: 0.0) }
26   - it 'is expected to return an error' do
27   - subject.save
28   - expect(subject.errors[:end]).to eq(["The End value should be greater than the Beginning value."])
  18 + context 'when beginning is -INF or end is INF' do
  19 + subject { FactoryGirl.build(:mezuro_range, end: "INF") }
  20 + it 'is expected to not return an error' do
  21 + subject.save
  22 + expect(subject.errors[:end]).to be_empty
  23 + end
29 24 end
30   - end
31   - context 'when beginning is smaller than end' do
32   - subject { FactoryGirl.build(:mezuro_range) }
33   - it 'is expected to not return an error' do
34   - subject.save
35   - expect(subject.errors[:end]).to be_empty
  25 + context 'when beginning is greater than end' do
  26 + subject { FactoryGirl.build(:mezuro_range, beginning: 1.0, end: 0.0) }
  27 + it 'is expected to return an error' do
  28 + subject.save
  29 + expect(subject.errors[:end]).to eq(["The End value should be greater than the Beginning value."])
  30 + end
  31 + end
  32 + context 'when beginning is smaller than end' do
  33 + subject { FactoryGirl.build(:mezuro_range) }
  34 + it 'is expected to not return an error' do
  35 + subject.save
  36 + expect(subject.errors[:end]).to be_empty
  37 + end
36 38 end
37 39 end
38 40 end
... ...
spec/models/validators/kalibro_uniqueness_validator_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe KalibroUniquenessValidator, :type => :model do
4   - describe 'methods' do
5   - describe 'validate_each' do
6   - context 'without saved projects' do
7   - before :each do
8   - Project.expects(:all).returns([])
9   - Project.expects(:request).returns(42)
10   - end
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'validate_each' do
  7 + context 'without saved projects' do
  8 + before :each do
  9 + Project.expects(:all).returns([])
  10 + Project.expects(:request).returns(42)
  11 + end
11 12  
12   - subject { FactoryGirl.build(:project) }
13   - it 'should contain no errors' do
14   - subject.save
15   - expect(subject.errors).to be_empty
  13 + subject { FactoryGirl.build(:project) }
  14 + it 'should contain no errors' do
  15 + subject.save
  16 + expect(subject.errors).to be_empty
  17 + end
16 18 end
17   - end
18 19  
19   - context 'with name already taken by another project' do
20   - before :each do
21   - @subject = FactoryGirl.build(:project)
22   - Project.expects(:all).returns([FactoryGirl.build(:project, id: @subject.id + 1)])
23   - end
  20 + context 'with name already taken by another project' do
  21 + before :each do
  22 + @subject = FactoryGirl.build(:project)
  23 + Project.expects(:all).returns([FactoryGirl.build(:project, id: @subject.id + 1)])
  24 + end
24 25  
25   - it 'should contain errors' do
26   - @subject.save
27   - expect(@subject.errors[:name]).to eq(["There is already a Project with name #{@subject.name}! Please, choose another one."])
  26 + it 'should contain errors' do
  27 + @subject.save
  28 + expect(@subject.errors[:name]).to eq(["There is already a Project with name #{@subject.name}! Please, choose another one."])
  29 + end
28 30 end
29 31 end
30 32 end
... ...
spec/models/validators/range_overlapping_validator_spec.rb
1 1 require 'rails_helper'
2 2  
3 3 describe RangeOverlappingValidator, :type => :model do
4   - describe 'methods' do
5   - describe 'validate' do
6   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
7   - let(:range) { FactoryGirl.build(:mezuro_range, beginning: '-INF', end: 0.0, metric_configuration_id: metric_configuration.id) }
8   -
9   - before :each do
10   - BeginningUniquenessValidator.any_instance.stubs(:validate_each)
11   - GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
12   - end
13   -
14   - context 'not overlapping' do
15   - let!(:not_overlapping_range) { FactoryGirl.build(:mezuro_range, id: 31, beginning: 0.0, end: 'INF', metric_configuration_id: metric_configuration.id) }
  4 + pending 'waiting for kalibro configurations integration' do
  5 + describe 'methods' do
  6 + describe 'validate' do
  7 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  8 + let(:range) { FactoryGirl.build(:mezuro_range, beginning: '-INF', end: 0.0, metric_configuration_id: metric_configuration.id) }
16 9  
17 10 before :each do
18   - MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([range, not_overlapping_range])
  11 + BeginningUniquenessValidator.any_instance.stubs(:validate_each)
  12 + GreaterThanBeginningValidator.any_instance.stubs(:validate_each)
19 13 end
20 14  
21   - it 'is expected to not return errors' do
22   - range.save
23   - expect(range.errors).to be_empty
  15 + context 'not overlapping' do
  16 + let!(:not_overlapping_range) { FactoryGirl.build(:mezuro_range, id: 31, beginning: 0.0, end: 'INF', metric_configuration_id: metric_configuration.id) }
  17 +
  18 + before :each do
  19 + MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([range, not_overlapping_range])
  20 + end
  21 +
  22 + it 'is expected to not return errors' do
  23 + range.save
  24 + expect(range.errors).to be_empty
  25 + end
24 26 end
25   - end
26 27  
27 28  
28   - context 'overlapping' do
29   - let!(:overlapping_range) { FactoryGirl.build(:mezuro_range, id: 31, beginning: '-INF', end: 'INF', metric_configuration_id: metric_configuration.id) }
  29 + context 'overlapping' do
  30 + let!(:overlapping_range) { FactoryGirl.build(:mezuro_range, id: 31, beginning: '-INF', end: 'INF', metric_configuration_id: metric_configuration.id) }
30 31  
31   - before :each do
32   - MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([range, overlapping_range])
33   - end
  32 + before :each do
  33 + MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([range, overlapping_range])
  34 + end
34 35  
35   - it 'is expected to return errors' do
36   - range.save
37   - expect(range.errors[:beginning]).to eq(["There is already a #{range.class} within these boundaries! Please, choose another interval."])
  36 + it 'is expected to return errors' do
  37 + range.save
  38 + expect(range.errors[:beginning]).to eq(["There is already a #{range.class} within these boundaries! Please, choose another interval."])
  39 + end
38 40 end
39 41 end
40 42 end
... ...