navvy 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,325 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe 'Navvy::Job' do
4
- before do
5
- require File.expand_path(File.dirname(__FILE__) + '/../setup/mongo_mapper')
6
- end
7
-
8
- describe '.enqueue' do
9
- before(:each) do
10
- Navvy::Job.delete_all
11
- end
12
-
13
- it 'should enqueue a job' do
14
- Navvy::Job.enqueue(Cow, :speak)
15
- Navvy::Job.count.should == 1
16
- end
17
-
18
- it 'should set the object and the method_name' do
19
- Navvy::Job.enqueue(Cow, :speak)
20
- job = Navvy::Job.first
21
- job.object.should == 'Cow'
22
- job.method_name.should == :speak
23
- end
24
-
25
- it 'should turn the method_name into a symbol' do
26
- Navvy::Job.enqueue(Cow, 'speak')
27
- job = Navvy::Job.first
28
- job.method_name.should == :speak
29
- end
30
-
31
- it 'should set the arguments' do
32
- Navvy::Job.enqueue(Cow, :speak, true, false)
33
- job = Navvy::Job.first
34
- job.arguments.should == [true, false]
35
- end
36
-
37
- it 'should set the created_at date' do
38
- Navvy::Job.enqueue(Cow, :speak, true, false)
39
- job = Navvy::Job.first
40
- job.created_at.should be_instance_of Time
41
- job.created_at.should <= Time.now
42
- job.created_at.should > 10.seconds.ago
43
- end
44
-
45
- it 'should set the run_at date' do
46
- Navvy::Job.enqueue(Cow, :speak, true, false)
47
- job = Navvy::Job.first
48
- job.run_at.should be_instance_of Time
49
- job.run_at.should <= Time.now
50
- job.created_at.should > 10.seconds.ago
51
- end
52
-
53
- it 'should return the enqueued job' do
54
- Navvy::Job.enqueue(Cow, :speak, true, false).
55
- should be_instance_of Navvy::Job
56
- end
57
- end
58
-
59
- describe '.next' do
60
- before(:each) do
61
- Navvy::Job.delete_all
62
- Navvy::Job.create(
63
- :object => 'Cow',
64
- :method_name => :last,
65
- :created_at => Time.now + 1.day,
66
- :run_at => Time.now
67
- )
68
- Navvy::Job.create(
69
- :object => 'Cow',
70
- :method_name => :break,
71
- :completed_at => Time.now,
72
- :run_at => Time.now
73
- )
74
- Navvy::Job.create(
75
- :object => 'Cow',
76
- :method_name => :break,
77
- :failed_at => Time.now,
78
- :run_at => Time.now
79
- )
80
- Navvy::Job.create(
81
- :object => 'Cow',
82
- :method_name => :tomorrow,
83
- :run_at => Time.now + 1.day
84
- )
85
- 120.times do
86
- Navvy::Job.enqueue(Cow, :speak)
87
- end
88
- end
89
-
90
- it 'should find the next 10 available jobs' do
91
- jobs = Navvy::Job.next
92
- jobs.count.should == 100
93
- jobs.each do |job|
94
- job.should be_instance_of Navvy::Job
95
- job.method_name.should == :speak
96
- end
97
- end
98
-
99
- it 'should find the next 2 available jobs' do
100
- Navvy::Job.next(2).count.should == 2
101
- end
102
-
103
- it 'should find the next 4 available jobs' do
104
- Navvy::Job.limit = 4
105
- Navvy::Job.next.count.should == 4
106
- end
107
- end
108
-
109
- describe '.cleanup' do
110
- before(:each) do
111
- Navvy::Job.delete_all
112
- Navvy::Job.create(
113
- :object => 'Cow',
114
- :method_name => :speak,
115
- :completed_at => Time.now - 2.days
116
- )
117
- Navvy::Job.create(
118
- :object => 'Cow',
119
- :method_name => :speak,
120
- :completed_at => Time.now
121
- )
122
- Navvy::Job.create(
123
- :object => 'Cow',
124
- :method_name => :speak
125
- )
126
- end
127
-
128
- it 'should delete all complete jobs when "keep" is false' do
129
- Navvy::Job.cleanup
130
- Navvy::Job.count.should == 1
131
- end
132
-
133
- it 'should not delete any complete jobs when "keep" is true' do
134
- Navvy::Job.keep = true
135
- Navvy::Job.cleanup
136
- Navvy::Job.count.should == 3
137
- end
138
-
139
- it 'should delete all complete jobs where "keep" has passed' do
140
- Navvy::Job.keep = 1.day
141
- Navvy::Job.cleanup
142
- Navvy::Job.count.should == 2
143
- end
144
- end
145
-
146
- describe '#run' do
147
-
148
- it 'should pass the arguments' do
149
- Navvy::Job.delete_all
150
- job = Navvy::Job.enqueue(Cow, :name, 'Betsy')
151
- Cow.should_receive(:name).with('Betsy')
152
- job.run
153
- end
154
-
155
- describe 'when everything goes well' do
156
- before(:each) do
157
- Navvy::Job.delete_all
158
- Navvy::Job.enqueue(Cow, :speak)
159
- Navvy::Job.keep = false
160
- end
161
-
162
- it 'should run the job and delete it' do
163
- jobs = Navvy::Job.next
164
- jobs.first.run.should == 'moo'
165
- Navvy::Job.count.should == 0
166
- end
167
-
168
- describe 'when Navvy::Job.keep is set' do
169
- it 'should mark the job as complete when keep is true' do
170
- Navvy::Job.keep = true
171
- jobs = Navvy::Job.next
172
- jobs.first.run
173
- Navvy::Job.count.should == 1
174
- jobs.first.started_at.should be_instance_of Time
175
- jobs.first.completed_at.should be_instance_of Time
176
- end
177
-
178
- it 'should mark the job as complete when keep has not passed yer' do
179
- Navvy::Job.keep = 1.day
180
- jobs = Navvy::Job.next
181
- jobs.first.run
182
- Navvy::Job.count.should == 1
183
- jobs.first.started_at.should be_instance_of Time
184
- jobs.first.completed_at.should be_instance_of Time
185
- end
186
-
187
- it 'should delete the job when the "keep" flag has passed' do
188
- Navvy::Job.keep = -1.day
189
- jobs = Navvy::Job.next
190
- jobs.first.run
191
- Navvy::Job.count.should == 0
192
- end
193
- end
194
- end
195
-
196
- describe 'when a job fails' do
197
- before(:each) do
198
- Navvy::Job.delete_all
199
- Navvy::Job.enqueue(Cow, :broken)
200
- end
201
-
202
- it 'should store the exception and current time' do
203
- jobs = Navvy::Job.next
204
- jobs.first.run
205
- Navvy::Job.count.should == 1
206
- jobs.first.exception.should == 'this method is broken'
207
- jobs.first.started_at.should be_instance_of Time
208
- jobs.first.failed_at.should be_instance_of Time
209
- end
210
- end
211
- end
212
-
213
- describe '#completed' do
214
- before(:each) do
215
- Navvy::Job.delete_all
216
- Navvy::Job.enqueue(Cow, :speak)
217
- end
218
-
219
- it 'should update the jobs completed_at date' do
220
- jobs = Navvy::Job.next
221
- jobs.first.completed
222
- jobs.first.completed_at.should_not be_nil
223
- end
224
-
225
- it 'should set the return if provided' do
226
- jobs = Navvy::Job.next
227
- jobs.first.completed('woo!')
228
- jobs.first.return.should == 'woo!'
229
- end
230
- end
231
-
232
- describe '#failed' do
233
- before(:each) do
234
- Navvy::Job.delete_all
235
- Navvy::Job.enqueue(Cow, :speak)
236
- end
237
-
238
- it 'should update the jobs failed_at date' do
239
- jobs = Navvy::Job.next
240
- jobs.first.failed
241
- jobs.first.failed_at.should_not be_nil
242
- end
243
-
244
- it 'should set the exception message if provided' do
245
- jobs = Navvy::Job.next
246
- jobs.first.failed('broken')
247
- jobs.first.exception.should == 'broken'
248
- end
249
- end
250
-
251
- describe '#ran?' do
252
- it 'should return false when failed_at? and completed_at? are false' do
253
- job = Navvy::Job.create
254
- job.ran?.should be_false
255
- end
256
-
257
- it 'should return true when failed_at? or completed_at? is true' do
258
- [
259
- Navvy::Job.create(:failed_at => Time.now),
260
- Navvy::Job.create(:completed_at => Time.now)
261
- ].each do |job|
262
- job.ran?.should be_true
263
- end
264
- end
265
- end
266
-
267
- describe '#duration' do
268
- it 'should return a duration if started_at and completed_at are set' do
269
- job = Navvy::Job.create(
270
- :started_at => 2.seconds.ago,
271
- :completed_at => Time.now
272
- )
273
-
274
- job.duration.should >= 2.seconds
275
- end
276
-
277
- it 'should return a duration if started_at and failed_at are set' do
278
- job = Navvy::Job.create(
279
- :started_at => 3.seconds.ago,
280
- :failed_at => Time.now
281
- )
282
-
283
- job.duration.should >= 3.seconds
284
- end
285
-
286
- it 'should return 0 if only started_at is set' do
287
- job = Navvy::Job.create(
288
- :started_at => 4.seconds.ago
289
- )
290
-
291
- job.duration.should == 0
292
- end
293
- end
294
-
295
- describe '#args' do
296
- it 'should return an array of arguments' do
297
- job = Navvy::Job.enqueue(Cow, :speak, true, false)
298
- job.args.should be_instance_of Array
299
- job.args.count.should == 2
300
- end
301
- end
302
-
303
- describe '#status' do
304
- before(:each) do
305
- Navvy::Job.delete_all
306
- end
307
-
308
- it 'should return :pending' do
309
- job = Navvy::Job.enqueue(Cow, :speak)
310
- job.status.should == :pending
311
- end
312
-
313
- it 'should return :completed' do
314
- job = Navvy::Job.enqueue(Cow, :speak)
315
- job.completed
316
- job.status.should == :completed
317
- end
318
-
319
- it 'should return :failed' do
320
- job = Navvy::Job.enqueue(Cow, :speak)
321
- job.failed
322
- job.status.should == :failed
323
- end
324
- end
325
- end
@@ -1,324 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe 'Navvy::Job' do
4
- before do
5
- require File.expand_path(File.dirname(__FILE__) + '/../setup/sequel')
6
- end
7
-
8
- describe '.enqueue' do
9
- before(:each) do
10
- Navvy::Job.delete
11
- end
12
-
13
- it 'should enqueue a job' do
14
- Navvy::Job.enqueue(Cow, :speak)
15
- Navvy::Job.count.should == 1
16
- end
17
-
18
- it 'should set the object and the method' do
19
- Navvy::Job.enqueue(Cow, :speak)
20
- job = Navvy::Job.first
21
- job.object.should == 'Cow'
22
- job.method_name.should == 'speak'
23
- end
24
-
25
- it 'should turn the method into a symbol' do
26
- Navvy::Job.enqueue(Cow, 'speak')
27
- job = Navvy::Job.first
28
- job.method_name.should == 'speak'
29
- end
30
-
31
- it 'should set the arguments' do
32
- Navvy::Job.enqueue(Cow, :speak, true, false)
33
- job = Navvy::Job.first
34
- YAML.load(job.arguments).should == [true, false]
35
- end
36
-
37
- it 'should set the created_at date' do
38
- Navvy::Job.enqueue(Cow, :speak, true, false)
39
- job = Navvy::Job.first
40
- job.created_at.should be_instance_of Time
41
- job.created_at.should <= Time.now
42
- job.created_at.should > Time.now - 10
43
- end
44
-
45
- it 'should set the run_at date' do
46
- Navvy::Job.enqueue(Cow, :speak, true, false)
47
- job = Navvy::Job.first
48
- job.run_at.should be_instance_of Time
49
- job.run_at.should <= Time.now
50
- job.created_at.should > Time.now - 10
51
- end
52
-
53
- it 'should return the enqueued job' do
54
- Navvy::Job.enqueue(Cow, :speak, true, false).
55
- should be_instance_of Navvy::Job
56
- end
57
- end
58
-
59
- describe '.next' do
60
- before(:each) do
61
- Navvy::Job.delete
62
- Navvy::Job.insert(
63
- :object => 'Cow',
64
- :method_name => :last.to_s,
65
- :created_at => Time.now + (60*60*24),
66
- :run_at => Time.now
67
- )
68
- Navvy::Job.insert(
69
- :object => 'Cow',
70
- :method_name => :break.to_s,
71
- :completed_at => Time.now,
72
- :run_at => Time.now
73
- )
74
- Navvy::Job.insert(
75
- :object => 'Cow',
76
- :method_name => :break.to_s,
77
- :failed_at => Time.now,
78
- :run_at => Time.now
79
- )
80
- Navvy::Job.insert(
81
- :object => 'Cow',
82
- :method_name => :tomorrow.to_s,
83
- :run_at => Time.now + (60*60*24)
84
- )
85
- 120.times do
86
- Navvy::Job.enqueue(Cow, :speak)
87
- end
88
- end
89
-
90
- it 'should find the next 10 available jobs' do
91
- jobs = Navvy::Job.next
92
- jobs.count.should == 100
93
- jobs.each do |job|
94
- job.should be_instance_of Navvy::Job
95
- job.method_name.should == 'speak'
96
- end
97
- end
98
-
99
- it 'should find the next 2 available jobs' do
100
- Navvy::Job.next(2).count.should == 2
101
- end
102
-
103
- it 'should find the next 4 available jobs' do
104
- Navvy::Job.limit = 4
105
- Navvy::Job.next.count.should == 4
106
- end
107
- end
108
-
109
- describe '.cleanup' do
110
- before(:each) do
111
- Navvy::Job.delete
112
- Navvy::Job.create(
113
- :object => 'Cow',
114
- :method_name => :speak.to_s,
115
- :completed_at => Time.now - (60*60*24*2)
116
- )
117
- Navvy::Job.create(
118
- :object => 'Cow',
119
- :method_name => :speak.to_s,
120
- :completed_at => Time.now
121
- )
122
- Navvy::Job.create(
123
- :object => 'Cow',
124
- :method_name => :speak.to_s
125
- )
126
- end
127
-
128
- it 'should delete all complete jobs when "keep" is false' do
129
- Navvy::Job.cleanup
130
- Navvy::Job.count.should == 1
131
- end
132
-
133
- it 'should not delete any complete jobs when "keep" is true' do
134
- Navvy::Job.keep = true
135
- Navvy::Job.cleanup
136
- Navvy::Job.count.should == 3
137
- end
138
-
139
- it 'should delete all complete jobs where "keep" has passed' do
140
- Navvy::Job.keep = (60*60*24)
141
- Navvy::Job.cleanup
142
- Navvy::Job.count.should == 2
143
- end
144
- end
145
-
146
- describe '#run' do
147
-
148
- it 'should pass the arguments' do
149
- Navvy::Job.delete
150
- job = Navvy::Job.enqueue(Cow, :name, 'Betsy')
151
- Cow.should_receive(:name).with('Betsy')
152
- job.run
153
- end
154
-
155
- describe 'when everything goes well' do
156
- before(:each) do
157
- Navvy::Job.delete
158
- Navvy::Job.enqueue(Cow, :speak)
159
- Navvy::Job.keep = false
160
- end
161
-
162
- it 'should run the job and delete it' do
163
- jobs = Navvy::Job.next
164
- jobs.first.run.should == 'moo'
165
- Navvy::Job.count.should == 0
166
- end
167
-
168
- describe 'when Navvy::Job.keep is set' do
169
- it 'should mark the job as complete when keep is true' do
170
- Navvy::Job.keep = true
171
- jobs = Navvy::Job.next
172
- jobs.first.run
173
- Navvy::Job.count.should == 1
174
- jobs.first.started_at.should be_instance_of Time
175
- jobs.first.completed_at.should be_instance_of Time
176
- end
177
-
178
- it 'should mark the job as complete when keep has not passed yer' do
179
- Navvy::Job.keep = (60*60*24)
180
- jobs = Navvy::Job.next
181
- jobs.first.run
182
- Navvy::Job.count.should == 1
183
- jobs.first.started_at.should be_instance_of Time
184
- jobs.first.completed_at.should be_instance_of Time
185
- end
186
-
187
- it 'should delete the job when the "keep" flag has passed' do
188
- Navvy::Job.keep = -(60*60*24)
189
- jobs = Navvy::Job.next
190
- jobs.first.run
191
- Navvy::Job.count.should == 0
192
- end
193
- end
194
- end
195
-
196
- describe 'when a job fails' do
197
- before(:each) do
198
- Navvy::Job.delete
199
- Navvy::Job.enqueue(Cow, :broken)
200
- end
201
-
202
- it 'should store the exception and current time' do
203
- jobs = Navvy::Job.next
204
- jobs.first.run
205
- Navvy::Job.count.should == 1
206
- jobs.first.exception.should == 'this method is broken'
207
- jobs.first.started_at.should be_instance_of Time
208
- jobs.first.failed_at.should be_instance_of Time
209
- end
210
- end
211
- end
212
-
213
- describe '#completed' do
214
- before(:each) do
215
- Navvy::Job.delete
216
- Navvy::Job.enqueue(Cow, :speak)
217
- end
218
-
219
- it 'should update the jobs completed_at date' do
220
- jobs = Navvy::Job.next
221
- jobs.first.completed
222
- jobs.first.completed_at.should_not be_nil
223
- end
224
-
225
- it 'should set the return if provided' do
226
- jobs = Navvy::Job.next
227
- jobs.first.completed('woo!')
228
- jobs.first.return.should == 'woo!'
229
- end
230
- end
231
-
232
- describe '#failed' do
233
- before(:each) do
234
- Navvy::Job.delete
235
- Navvy::Job.enqueue(Cow, :speak)
236
- end
237
-
238
- it 'should update the jobs failed_at date' do
239
- jobs = Navvy::Job.next
240
- jobs.first.failed
241
- jobs.first.failed_at.should_not be_nil
242
- end
243
-
244
- it 'should set the exception message if provided' do
245
- jobs = Navvy::Job.next
246
- jobs.first.failed('broken')
247
- jobs.first.exception.should == 'broken'
248
- end
249
- end
250
-
251
- describe '#ran?' do
252
- it 'should return false when failed_at? and completed_at? are false' do
253
- job = Navvy::Job.create
254
- job.ran?.should be_false
255
- end
256
-
257
- it 'should return true when failed_at? or completed_at? is true' do
258
- [
259
- Navvy::Job.create(:failed_at => Time.now),
260
- Navvy::Job.create(:completed_at => Time.now)
261
- ].each do |job|
262
- job.ran?.should be_true
263
- end
264
- end
265
- end
266
-
267
- describe '#duration' do
268
- it 'should return a duration if started_at and completed_at are set' do
269
- job = Navvy::Job.create(
270
- :started_at => (Time.now - 2),
271
- :completed_at => Time.now
272
- )
273
- job.duration.should >= 2
274
- end
275
-
276
- it 'should return a duration if started_at and failed_at are set' do
277
- job = Navvy::Job.create(
278
- :started_at => (Time.now - 3),
279
- :failed_at => Time.now
280
- )
281
-
282
- job.duration.should >= 2
283
- end
284
-
285
- it 'should return 0 if only started_at is set' do
286
- job = Navvy::Job.create(
287
- :started_at => (Time.now - 4)
288
- )
289
-
290
- job.duration.should == 0
291
- end
292
- end
293
-
294
- describe '#args' do
295
- it 'should return an array of arguments' do
296
- job = Navvy::Job.enqueue(Cow, :speak, true, false)
297
- job.args.should be_instance_of Array
298
- job.args.count.should == 2
299
- end
300
- end
301
-
302
- describe '#status' do
303
- before(:each) do
304
- Navvy::Job.delete
305
- end
306
-
307
- it 'should return :pending' do
308
- job = Navvy::Job.enqueue(Cow, :speak)
309
- job.status.should == :pending
310
- end
311
-
312
- it 'should return :completed' do
313
- job = Navvy::Job.enqueue(Cow, :speak)
314
- job.completed
315
- job.status.should == :completed
316
- end
317
-
318
- it 'should return :failed' do
319
- job = Navvy::Job.enqueue(Cow, :speak)
320
- job.failed
321
- job.status.should == :failed
322
- end
323
- end
324
- end