resque_unit 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/resque_unit/scheduler.rb +4 -5
- data/test/resque_unit_scheduler_test.rb +33 -1
- data/test/resque_unit_test.rb +37 -37
- metadata +10 -10
@@ -1,5 +1,5 @@
|
|
1
1
|
module ResqueUnit
|
2
|
-
|
2
|
+
|
3
3
|
# ResqueUnit::Scheduler is a group of functions mocking the behavior
|
4
4
|
# of resque-scheduler. It is included into Resque when
|
5
5
|
# 'resque_unit_scheduler' is required.
|
@@ -11,13 +11,13 @@ module ResqueUnit
|
|
11
11
|
def enqueue_at(timestamp, klass, *args)
|
12
12
|
enqueue_with_timestamp(timestamp, klass, *args)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
# Identical to enqueue_at but takes number_of_seconds_from_now
|
16
16
|
# instead of a timestamp.
|
17
17
|
def enqueue_in(number_of_seconds_from_now, klass, *args)
|
18
18
|
enqueue_at(Time.now + number_of_seconds_from_now, klass, *args)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def enqueue_with_timestamp(timestamp, klass, *args)
|
22
22
|
enqueue_unit(queue_for(klass), {"class" => klass.name, "args" => args, "timestamp" => timestamp})
|
23
23
|
end
|
@@ -32,10 +32,9 @@ module ResqueUnit
|
|
32
32
|
def remove_delayed_job_from_timestamp(timestamp, klass, *args)
|
33
33
|
encoded_job_payloads = Resque.queue(queue_for(klass))
|
34
34
|
args ||= []
|
35
|
-
encoded_job_payloads.delete_if { |e| e = Resque.decode(e); e["class"] == klass.to_s && e["timestamp"] == timestamp.to_s && e["args"] == args }
|
35
|
+
encoded_job_payloads.delete_if { |e| e = Resque.decode(e); e["class"] == klass.to_s && Time.parse(e["timestamp"]).to_i == Time.parse(timestamp.to_s).to_i && e["args"] == args }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
Resque.send(:extend, Scheduler)
|
40
40
|
end
|
41
|
-
|
@@ -129,7 +129,7 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
context "and then the job is removed with #
|
132
|
+
context "and then the job is removed with #remove_delayed_job_from_timestamp" do
|
133
133
|
setup do
|
134
134
|
Resque.remove_delayed_job_from_timestamp(@time, MediumPriorityJob)
|
135
135
|
end
|
@@ -144,6 +144,22 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
147
|
+
|
148
|
+
context "and then the job is removed with #remove_delayed_job_from_timestamp with timestamp specified in another timezone" do
|
149
|
+
setup do
|
150
|
+
Resque.remove_delayed_job_from_timestamp(@time.utc, MediumPriorityJob)
|
151
|
+
end
|
152
|
+
|
153
|
+
should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
|
154
|
+
assert_not_queued_at(@time, MediumPriorityJob)
|
155
|
+
end
|
156
|
+
|
157
|
+
should "fail the assert_queued_at(@time, MediumPriorityJob) assertion" do
|
158
|
+
assert_raise Test::Unit::AssertionFailedError do
|
159
|
+
assert_queued_at(@time, MediumPriorityJob)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
147
163
|
end
|
148
164
|
|
149
165
|
context "A task that schedules a resque job with arguments on on Sept. 6, 2016 at 6am" do
|
@@ -197,5 +213,21 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
|
|
197
213
|
end
|
198
214
|
end
|
199
215
|
end
|
216
|
+
|
217
|
+
context "and then the job is removed with #remove_delayed_job_from_timestamp with timestamp in another timezone" do
|
218
|
+
setup do
|
219
|
+
Resque.remove_delayed_job_from_timestamp(@time.utc, JobWithArguments, 1, "test")
|
220
|
+
end
|
221
|
+
|
222
|
+
should "pass the assert_not_queued_at(@time, JobWithArguments, *args) assertion" do
|
223
|
+
assert_not_queued_at(@time, JobWithArguments, [1, "test"])
|
224
|
+
end
|
225
|
+
|
226
|
+
should "fail the assert_queued_at(@time, MediumPriorityJob, *args) assertion" do
|
227
|
+
assert_raise Test::Unit::AssertionFailedError do
|
228
|
+
assert_queued_at(@time, JobWithArguments, [1, "test"])
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
200
232
|
end
|
201
233
|
end
|
data/test/resque_unit_test.rb
CHANGED
@@ -26,9 +26,9 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
26
26
|
assert_equal 1, Resque.queue(:a_non_class_determined_queue).length
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
context "A task that spawns multiple jobs on a single queue" do
|
31
|
-
setup do
|
31
|
+
setup do
|
32
32
|
3.times {Resque.enqueue(HighPriorityJob)}
|
33
33
|
end
|
34
34
|
|
@@ -52,7 +52,7 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
context "A task that schedules a resque job" do
|
55
|
-
setup do
|
55
|
+
setup do
|
56
56
|
@returned = Resque.enqueue(LowPriorityJob)
|
57
57
|
end
|
58
58
|
|
@@ -60,12 +60,12 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
60
60
|
assert @returned
|
61
61
|
end
|
62
62
|
|
63
|
-
should "pass the assert_queued(job) assertion" do
|
63
|
+
should "pass the assert_queued(job) assertion" do
|
64
64
|
assert_queued(LowPriorityJob)
|
65
65
|
end
|
66
66
|
|
67
|
-
should "fail the assert_not_queued(job) assertion" do
|
68
|
-
assert_raise Test::Unit::AssertionFailedError do
|
67
|
+
should "fail the assert_not_queued(job) assertion" do
|
68
|
+
assert_raise Test::Unit::AssertionFailedError do
|
69
69
|
assert_not_queued(LowPriorityJob)
|
70
70
|
end
|
71
71
|
end
|
@@ -74,17 +74,17 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
74
74
|
assert_equal 1, Resque.size(:low)
|
75
75
|
end
|
76
76
|
|
77
|
-
context ", when Resque.run! is called," do
|
78
|
-
setup do
|
77
|
+
context ", when Resque.run! is called," do
|
78
|
+
setup do
|
79
79
|
assert !LowPriorityJob.run?, "The job should not have been run yet"
|
80
80
|
Resque.run!
|
81
81
|
end
|
82
|
-
|
83
|
-
teardown do
|
82
|
+
|
83
|
+
teardown do
|
84
84
|
LowPriorityJob.run = false
|
85
85
|
end
|
86
86
|
|
87
|
-
should "run the job" do
|
87
|
+
should "run the job" do
|
88
88
|
assert LowPriorityJob.run?, "The job should have run"
|
89
89
|
end
|
90
90
|
|
@@ -97,7 +97,7 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
97
97
|
end
|
98
98
|
|
99
99
|
context "A task that schedules a resque job with hooks" do
|
100
|
-
setup do
|
100
|
+
setup do
|
101
101
|
Resque.enable_hooks!
|
102
102
|
end
|
103
103
|
|
@@ -106,22 +106,22 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
106
106
|
end
|
107
107
|
|
108
108
|
context "before, around, after, failure, after_enqueue" do
|
109
|
-
setup do
|
109
|
+
setup do
|
110
110
|
JobWithHooks.clear_markers
|
111
111
|
Resque.enqueue(JobWithHooks)
|
112
112
|
end
|
113
113
|
|
114
|
-
should "have run the after_enqueue hook" do
|
114
|
+
should "have run the after_enqueue hook" do
|
115
115
|
assert_queued(JobWithHooks)
|
116
116
|
assert(JobWithHooks.markers[:after_enqueue], 'no after_queue marker set')
|
117
117
|
end
|
118
118
|
|
119
|
-
should "have run the before_enqueue hook" do
|
119
|
+
should "have run the before_enqueue hook" do
|
120
120
|
assert(JobWithHooks.markers[:before_enqueue], 'no before_queue marker set')
|
121
121
|
assert_queued(JobWithHooks)
|
122
122
|
end
|
123
123
|
|
124
|
-
should "run the before and after hooks during a run" do
|
124
|
+
should "run the before and after hooks during a run" do
|
125
125
|
Resque.run!
|
126
126
|
assert(JobWithHooks.markers[:before], 'no before marker set')
|
127
127
|
assert(JobWithHooks.markers[:around], 'no around marker set')
|
@@ -253,12 +253,12 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
253
253
|
end
|
254
254
|
|
255
255
|
context "An empty queue" do
|
256
|
-
should "pass the assert_not_queued(job) assertion" do
|
256
|
+
should "pass the assert_not_queued(job) assertion" do
|
257
257
|
assert_not_queued(LowPriorityJob)
|
258
258
|
end
|
259
259
|
|
260
260
|
should "fail the assert_queued(job) assertion" do
|
261
|
-
assert_raise Test::Unit::AssertionFailedError do
|
261
|
+
assert_raise Test::Unit::AssertionFailedError do
|
262
262
|
assert_queued(LowPriorityJob)
|
263
263
|
end
|
264
264
|
end
|
@@ -267,16 +267,16 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
267
267
|
assert_equal 0, Resque.size(:low)
|
268
268
|
end
|
269
269
|
end
|
270
|
-
|
271
|
-
context "A task that schedules a resque job with arguments" do
|
272
|
-
setup do
|
270
|
+
|
271
|
+
context "A task that schedules a resque job with arguments" do
|
272
|
+
setup do
|
273
273
|
Resque.enqueue(JobWithArguments, 1, :test, {:symbol => :symbol})
|
274
274
|
end
|
275
|
-
|
275
|
+
|
276
276
|
should "pass the assert_queued(job, *args) assertion if the args match and sees enqueued symbols as strings" do
|
277
277
|
assert_queued(JobWithArguments, [1, "test", {"symbol"=>"symbol"}])
|
278
278
|
end
|
279
|
-
|
279
|
+
|
280
280
|
should "pass the assert_queued(job, *args) assertion if the args match using symbols" do
|
281
281
|
assert_queued(JobWithArguments, [1, :test, {:symbol => :symbol}])
|
282
282
|
end
|
@@ -285,8 +285,8 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
285
285
|
assert_queued(JobWithArguments)
|
286
286
|
end
|
287
287
|
|
288
|
-
should "fail the assert_queued(job) assertion if the args don't match" do
|
289
|
-
assert_raise Test::Unit::AssertionFailedError do
|
288
|
+
should "fail the assert_queued(job) assertion if the args don't match" do
|
289
|
+
assert_raise Test::Unit::AssertionFailedError do
|
290
290
|
assert_queued(JobWithArguments, [2, "test"])
|
291
291
|
end
|
292
292
|
end
|
@@ -296,23 +296,23 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
296
296
|
end
|
297
297
|
|
298
298
|
should "fail the assert_not_queued(job) assertion if the args match" do
|
299
|
-
assert_raise Test::Unit::AssertionFailedError do
|
299
|
+
assert_raise Test::Unit::AssertionFailedError do
|
300
300
|
assert_not_queued(JobWithArguments, [1, "test", {"symbol"=>"symbol"}])
|
301
301
|
end
|
302
302
|
end
|
303
303
|
end
|
304
304
|
|
305
305
|
context "A job that schedules a new resque job" do
|
306
|
-
setup do
|
306
|
+
setup do
|
307
307
|
Resque.enqueue(JobThatCreatesANewJob)
|
308
308
|
end
|
309
309
|
|
310
|
-
should "pass the assert_queued(job) assertion" do
|
310
|
+
should "pass the assert_queued(job) assertion" do
|
311
311
|
assert_queued(JobThatCreatesANewJob)
|
312
312
|
end
|
313
313
|
|
314
|
-
should "fail the assert_not_queued(job) assertion" do
|
315
|
-
assert_raise Test::Unit::AssertionFailedError do
|
314
|
+
should "fail the assert_not_queued(job) assertion" do
|
315
|
+
assert_raise Test::Unit::AssertionFailedError do
|
316
316
|
assert_not_queued(JobThatCreatesANewJob)
|
317
317
|
end
|
318
318
|
end
|
@@ -321,8 +321,8 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
321
321
|
assert_not_queued(LowPriorityJob)
|
322
322
|
end
|
323
323
|
|
324
|
-
context ", when Resque.run! is called," do
|
325
|
-
setup do
|
324
|
+
context ", when Resque.run! is called," do
|
325
|
+
setup do
|
326
326
|
Resque.run!
|
327
327
|
end
|
328
328
|
|
@@ -341,7 +341,7 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
341
341
|
Resque.full_run!
|
342
342
|
end
|
343
343
|
|
344
|
-
teardown do
|
344
|
+
teardown do
|
345
345
|
LowPriorityJob.run = false
|
346
346
|
end
|
347
347
|
|
@@ -370,10 +370,10 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
370
370
|
assert_queued(HighPriorityJob)
|
371
371
|
end
|
372
372
|
|
373
|
-
context ", when Resque.run_for! is called," do
|
373
|
+
context ", when Resque.run_for! is called," do
|
374
374
|
should "run only tasks in the high priority queue" do
|
375
375
|
Resque.run_for!(Resque.queue_for(HighPriorityJob))
|
376
|
-
|
376
|
+
|
377
377
|
assert_queued(LowPriorityJob)
|
378
378
|
assert_not_queued(HighPriorityJob)
|
379
379
|
end
|
@@ -389,7 +389,7 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
389
389
|
assert_equal "LowPriorityJob should have been queued in low: [].", error.message
|
390
390
|
end
|
391
391
|
end
|
392
|
-
|
392
|
+
|
393
393
|
should "include job arguments if provided" do
|
394
394
|
begin
|
395
395
|
assert_not_queued(JobWithArguments, [1, "test"])
|
@@ -408,7 +408,7 @@ class ResqueUnitTest < Test::Unit::TestCase
|
|
408
408
|
assert_equal "LowPriorityJob should not have been queued in low.", error.message
|
409
409
|
end
|
410
410
|
end
|
411
|
-
|
411
|
+
|
412
412
|
should "include job arguments if provided" do
|
413
413
|
begin
|
414
414
|
Resque.enqueue(JobWithArguments, 1, "test")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque_unit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-12 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70357498000140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.4.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70357498000140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70357497999740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70357497999740
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: shoulda
|
38
|
-
requirement: &
|
38
|
+
requirement: &70357497999280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70357497999280
|
47
47
|
description:
|
48
48
|
email: justin@uberweiss.org
|
49
49
|
executables: []
|
@@ -80,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
80
|
version: '0'
|
81
81
|
segments:
|
82
82
|
- 0
|
83
|
-
hash:
|
83
|
+
hash: 2837385060471172776
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
segments:
|
91
91
|
- 0
|
92
|
-
hash:
|
92
|
+
hash: 2837385060471172776
|
93
93
|
requirements: []
|
94
94
|
rubyforge_project:
|
95
95
|
rubygems_version: 1.8.10
|