Commit 314fe766b166520728a9bbd050727f3f2c4ca5a2

Authored by Cyril Mougel
1 parent 2f20b79b
Exists in master and in 1 other branch production

fix spec/model/problem with fabrication_gem

spec/fabricators/app_fabricator.rb
1 1 Fabricator(:app) do
2   - name { sequence(:app_name) }
  2 + name { sequence(:app_name){|n| "App ##{n}"} }
3 3 end
4 4  
5 5 Fabricator(:app_with_watcher, :from => :app) do
... ...
spec/fabricators/sequences_fabricator.rb
1 1 Fabricate.sequence(:name) {|n| "John #{n} Doe"}
2 2 Fabricate.sequence(:word) {|n| "word#{n}"}
3   -Fabricate.sequence(:app_name) {|n| "App ##{n}"}
4 3 Fabricate.sequence(:email) {|n| "email#{n}@example.com"}
5 4 Fabricate.sequence(:user_email) {|n| "user.#{n}@example.com"}
6 5  
... ...
spec/models/problem_spec.rb
... ... @@ -3,16 +3,16 @@ require 'spec_helper'
3 3 describe Problem do
4 4 context '#last_notice_at' do
5 5 it "returns the created_at timestamp of the latest notice" do
6   - err = Factory(:err)
  6 + err = Fabricate(:err)
7 7 problem = err.problem
8 8 problem.should_not be_nil
9 9  
10 10 problem.last_notice_at.should be_nil
11 11  
12   - notice1 = Factory(:notice, :err => err)
  12 + notice1 = Fabricate(:notice, :err => err)
13 13 problem.last_notice_at.should == notice1.created_at
14 14  
15   - notice2 = Factory(:notice, :err => err)
  15 + notice2 = Fabricate(:notice, :err => err)
16 16 problem.last_notice_at.should == notice2.created_at
17 17 end
18 18 end
... ... @@ -20,10 +20,10 @@ describe Problem do
20 20  
21 21 context '#message' do
22 22 it "adding a notice caches its message" do
23   - err = Factory(:err)
  23 + err = Fabricate(:err)
24 24 problem = err.problem
25 25 lambda {
26   - Factory(:notice, :err => err, :message => 'ERR 1')
  26 + Fabricate(:notice, :err => err, :message => 'ERR 1')
27 27 }.should change(problem, :message).from(nil).to('ERR 1')
28 28 end
29 29 end
... ... @@ -32,9 +32,9 @@ describe Problem do
32 32 context 'being created' do
33 33 context 'when the app has err notifications set to false' do
34 34 it 'should not send an email notification' do
35   - app = Factory(:app_with_watcher, :notify_on_errs => false)
  35 + app = Fabricate(:app_with_watcher, :notify_on_errs => false)
36 36 Mailer.should_not_receive(:err_notification)
37   - Factory(:problem, :app => app)
  37 + Fabricate(:problem, :app => app)
38 38 end
39 39 end
40 40 end
... ... @@ -48,7 +48,7 @@ describe Problem do
48 48 end
49 49  
50 50 it "should be able to be resolved" do
51   - problem = Factory(:problem)
  51 + problem = Fabricate(:problem)
52 52 problem.should_not be_resolved
53 53 problem.resolve!
54 54 problem.reload.should be_resolved
... ... @@ -58,14 +58,14 @@ describe Problem do
58 58  
59 59 context "resolve!" do
60 60 it "marks the problem as resolved" do
61   - problem = Factory(:problem)
  61 + problem = Fabricate(:problem)
62 62 problem.should_not be_resolved
63 63 problem.resolve!
64 64 problem.should be_resolved
65 65 end
66 66  
67 67 it "should throw an err if it's not successful" do
68   - problem = Factory(:problem)
  68 + problem = Fabricate(:problem)
69 69 problem.should_not be_resolved
70 70 problem.stub!(:valid?).and_return(false)
71 71 problem.should_not be_valid
... ... @@ -78,8 +78,8 @@ describe Problem do
78 78  
79 79 context ".merge!" do
80 80 it "collects the Errs from several problems into one and deletes the other problems" do
81   - problem1 = Factory(:err).problem
82   - problem2 = Factory(:err).problem
  81 + problem1 = Fabricate(:err).problem
  82 + problem2 = Fabricate(:err).problem
83 83 problem1.errs.length.should == 1
84 84 problem2.errs.length.should == 1
85 85  
... ... @@ -93,8 +93,8 @@ describe Problem do
93 93  
94 94 context "#unmerge!" do
95 95 it "creates a separate problem for each err" do
96   - problem1 = Factory(:notice).problem
97   - problem2 = Factory(:notice).problem
  96 + problem1 = Fabricate(:notice).problem
  97 + problem2 = Fabricate(:notice).problem
98 98 merged_problem = Problem.merge!(problem1, problem2)
99 99 merged_problem.errs.length.should == 2
100 100  
... ... @@ -103,7 +103,7 @@ describe Problem do
103 103 end
104 104  
105 105 it "runs smoothly for problem without errs" do
106   - expect { Factory(:problem).unmerge! }.not_to raise_error
  106 + expect { Fabricate(:problem).unmerge! }.not_to raise_error
107 107 end
108 108 end
109 109  
... ... @@ -111,8 +111,8 @@ describe Problem do
111 111 context "Scopes" do
112 112 context "resolved" do
113 113 it 'only finds resolved Problems' do
114   - resolved = Factory(:problem, :resolved => true)
115   - unresolved = Factory(:problem, :resolved => false)
  114 + resolved = Fabricate(:problem, :resolved => true)
  115 + unresolved = Fabricate(:problem, :resolved => false)
116 116 Problem.resolved.all.should include(resolved)
117 117 Problem.resolved.all.should_not include(unresolved)
118 118 end
... ... @@ -120,8 +120,8 @@ describe Problem do
120 120  
121 121 context "unresolved" do
122 122 it 'only finds unresolved Problems' do
123   - resolved = Factory(:problem, :resolved => true)
124   - unresolved = Factory(:problem, :resolved => false)
  123 + resolved = Fabricate(:problem, :resolved => true)
  124 + unresolved = Fabricate(:problem, :resolved => false)
125 125 Problem.unresolved.all.should_not include(resolved)
126 126 Problem.unresolved.all.should include(unresolved)
127 127 end
... ... @@ -131,9 +131,9 @@ describe Problem do
131 131  
132 132 context "notice counter cache" do
133 133 before do
134   - @app = Factory(:app)
135   - @problem = Factory(:problem, :app => @app)
136   - @err = Factory(:err, :problem => @problem)
  134 + @app = Fabricate(:app)
  135 + @problem = Fabricate(:problem, :app => @app)
  136 + @err = Fabricate(:err, :problem => @problem)
137 137 end
138 138  
139 139 it "#notices_count returns 0 by default" do
... ... @@ -142,12 +142,12 @@ describe Problem do
142 142  
143 143 it "adding a notice increases #notices_count by 1" do
144 144 lambda {
145   - Factory(:notice, :err => @err, :message => 'ERR 1')
  145 + Fabricate(:notice, :err => @err, :message => 'ERR 1')
146 146 }.should change(@problem, :notices_count).from(0).to(1)
147 147 end
148 148  
149 149 it "removing a notice decreases #notices_count by 1" do
150   - notice1 = Factory(:notice, :err => @err, :message => 'ERR 1')
  150 + notice1 = Fabricate(:notice, :err => @err, :message => 'ERR 1')
151 151 lambda {
152 152 @err.notices.first.destroy
153 153 @problem.reload
... ... @@ -157,19 +157,18 @@ describe Problem do
157 157  
158 158  
159 159 context "#app_name" do
160   - before do
161   - @app = Factory(:app)
162   - end
  160 + let!(:app) { Fabricate(:app) }
  161 + let!(:problem) { Fabricate(:problem, :app => app) }
  162 +
  163 + before { app.reload }
163 164  
164 165 it "is set when a problem is created" do
165   - problem = Factory(:problem, :app => @app)
166   - assert_equal @app.name, problem.app_name
  166 + assert_equal app.name, problem.app_name
167 167 end
168 168  
169 169 it "is updated when an app is updated" do
170   - problem = Factory(:problem, :app => @app)
171 170 lambda {
172   - @app.update_attributes!(:name => "Bar App")
  171 + app.update_attributes!(:name => "Bar App")
173 172 problem.reload
174 173 }.should change(problem, :app_name).to("Bar App")
175 174 end
... ... @@ -178,21 +177,21 @@ describe Problem do
178 177  
179 178 context "#last_deploy_at" do
180 179 before do
181   - @app = Factory(:app)
  180 + @app = Fabricate(:app)
182 181 @last_deploy = 10.days.ago.localtime.round(0)
183   - deploy = Factory(:deploy, :app => @app, :created_at => @last_deploy, :environment => "production")
  182 + deploy = Fabricate(:deploy, :app => @app, :created_at => @last_deploy, :environment => "production")
184 183 end
185 184  
186 185 it "is set when a problem is created" do
187   - problem = Factory(:problem, :app => @app, :environment => "production")
  186 + problem = Fabricate(:problem, :app => @app, :environment => "production")
188 187 assert_equal @last_deploy, problem.last_deploy_at
189 188 end
190 189  
191 190 it "is updated when a deploy is created" do
192   - problem = Factory(:problem, :app => @app, :environment => "production")
  191 + problem = Fabricate(:problem, :app => @app, :environment => "production")
193 192 next_deploy = 5.minutes.ago.localtime.round(0)
194 193 lambda {
195   - @deploy = Factory(:deploy, :app => @app, :created_at => next_deploy)
  194 + @deploy = Fabricate(:deploy, :app => @app, :created_at => next_deploy)
196 195 problem.reload
197 196 }.should change(problem, :last_deploy_at).from(@last_deploy).to(next_deploy)
198 197 end
... ... @@ -200,9 +199,9 @@ describe Problem do
200 199  
201 200 context "notice messages cache" do
202 201 before do
203   - @app = Factory(:app)
204   - @problem = Factory(:problem, :app => @app)
205   - @err = Factory(:err, :problem => @problem)
  202 + @app = Fabricate(:app)
  203 + @problem = Fabricate(:problem, :app => @app)
  204 + @err = Fabricate(:err, :problem => @problem)
206 205 end
207 206  
208 207 it "#messages should be empty by default" do
... ... @@ -211,12 +210,12 @@ describe Problem do
211 210  
212 211 it "adding a notice adds a string to #messages" do
213 212 lambda {
214   - Factory(:notice, :err => @err, :message => 'ERR 1')
  213 + Fabricate(:notice, :err => @err, :message => 'ERR 1')
215 214 }.should change(@problem, :messages).from({}).to({Digest::MD5.hexdigest('ERR 1') => {'value' => 'ERR 1', 'count' => 1}})
216 215 end
217 216  
218 217 it "removing a notice removes string from #messages" do
219   - notice1 = Factory(:notice, :err => @err, :message => 'ERR 1')
  218 + notice1 = Fabricate(:notice, :err => @err, :message => 'ERR 1')
220 219 lambda {
221 220 @err.notices.first.destroy
222 221 @problem.reload
... ... @@ -226,9 +225,9 @@ describe Problem do
226 225  
227 226 context "notice hosts cache" do
228 227 before do
229   - @app = Factory(:app)
230   - @problem = Factory(:problem, :app => @app)
231   - @err = Factory(:err, :problem => @problem)
  228 + @app = Fabricate(:app)
  229 + @problem = Fabricate(:problem, :app => @app)
  230 + @err = Fabricate(:err, :problem => @problem)
232 231 end
233 232  
234 233 it "#hosts should be empty by default" do
... ... @@ -237,12 +236,12 @@ describe Problem do
237 236  
238 237 it "adding a notice adds a string to #hosts" do
239 238 lambda {
240   - Factory(:notice, :err => @err, :request => {'url' => "http://example.com/resource/12"})
  239 + Fabricate(:notice, :err => @err, :request => {'url' => "http://example.com/resource/12"})
241 240 }.should change(@problem, :hosts).from({}).to({Digest::MD5.hexdigest('example.com') => {'value' => 'example.com', 'count' => 1}})
242 241 end
243 242  
244 243 it "removing a notice removes string from #hosts" do
245   - notice1 = Factory(:notice, :err => @err, :request => {'url' => "http://example.com/resource/12"})
  244 + notice1 = Fabricate(:notice, :err => @err, :request => {'url' => "http://example.com/resource/12"})
246 245 lambda {
247 246 @err.notices.first.destroy
248 247 @problem.reload
... ... @@ -252,9 +251,9 @@ describe Problem do
252 251  
253 252 context "notice user_agents cache" do
254 253 before do
255   - @app = Factory(:app)
256   - @problem = Factory(:problem, :app => @app)
257   - @err = Factory(:err, :problem => @problem)
  254 + @app = Fabricate(:app)
  255 + @problem = Fabricate(:problem, :app => @app)
  256 + @err = Fabricate(:err, :problem => @problem)
258 257 end
259 258  
260 259 it "#user_agents should be empty by default" do
... ... @@ -263,12 +262,12 @@ describe Problem do
263 262  
264 263 it "adding a notice adds a string to #user_agents" do
265 264 lambda {
266   - Factory(:notice, :err => @err, :request => {'cgi-data' => {'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'}})
  265 + Fabricate(:notice, :err => @err, :request => {'cgi-data' => {'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'}})
267 266 }.should change(@problem, :user_agents).from({}).to({Digest::MD5.hexdigest('Chrome 10.0.648.204') => {'value' => 'Chrome 10.0.648.204', 'count' => 1}})
268 267 end
269 268  
270 269 it "removing a notice removes string from #user_agents" do
271   - notice1 = Factory(:notice, :err => @err, :request => {'cgi-data' => {'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'}})
  270 + notice1 = Fabricate(:notice, :err => @err, :request => {'cgi-data' => {'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'}})
272 271 lambda {
273 272 @err.notices.first.destroy
274 273 @problem.reload
... ... @@ -278,8 +277,8 @@ describe Problem do
278 277  
279 278 context "comment counter cache" do
280 279 before do
281   - @app = Factory(:app)
282   - @problem = Factory(:problem, :app => @app)
  280 + @app = Fabricate(:app)
  281 + @problem = Fabricate(:problem, :app => @app)
283 282 end
284 283  
285 284 it "#comments_count returns 0 by default" do
... ... @@ -288,12 +287,12 @@ describe Problem do
288 287  
289 288 it "adding a comment increases #comments_count by 1" do
290 289 lambda {
291   - Factory(:comment, :err => @problem)
  290 + Fabricate(:comment, :err => @problem)
292 291 }.should change(@problem, :comments_count).from(0).to(1)
293 292 end
294 293  
295 294 it "removing a comment decreases #comments_count by 1" do
296   - comment1 = Factory(:comment, :err => @problem)
  295 + comment1 = Fabricate(:comment, :err => @problem)
297 296 lambda {
298 297 @problem.reload.comments.first.destroy
299 298 @problem.reload
... ...