navvy 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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