-
Notifications
You must be signed in to change notification settings - Fork 86
/
resque_scheduler_spec.rb
62 lines (47 loc) · 1.55 KB
/
resque_scheduler_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
require 'resque_spec'
module ResqueSpec
def scheduled?(klass, time, *args)
schedule_for(klass).any? {|entry| entry[:klass] == klass && entry[:time] == time && entry[:args] == args}
end
def scheduled_anytime?(klass, *args)
schedule_for(klass).any? {|entry| entry[:klass] == klass && entry[:args] == args}
end
def schedule_for(klass)
name = queue_name(klass).to_s << "_scheduled"
queues[name]
end
module ResqueScheduler
def enqueue_at(time, klass, *args)
ResqueSpec.schedule_for(klass) << {:klass => klass, :time => time, :args => args}
end
end
end
Resque.extend(ResqueSpec::ResqueScheduler)
RSpec::Matchers.define :have_scheduled do |*expected_args|
match do |actual|
ResqueSpec.scheduled_anytime?(actual, *expected_args)
end
failure_message_for_should do |actual|
"expected that #{actual} would have [#{expected_args.join(', ')}] queued"
end
failure_message_for_should_not do |actual|
"expected that #{actual} would not have [#{expected_args.join(', ')}] queued"
end
description do
"have scheduled arguments"
end
end
RSpec::Matchers.define :have_scheduled_at do |*expected_args|
match do |actual|
ResqueSpec.scheduled?(actual, *expected_args)
end
failure_message_for_should do |actual|
"expected that #{actual} would have [#{expected_args.join(', ')}] queued"
end
failure_message_for_should_not do |actual|
"expected that #{actual} would not have [#{expected_args.join(', ')}] queued"
end
description do
"have scheduled at the given time the arguments"
end
end