resque_unit 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -109,6 +109,7 @@ module Resque
109
109
  hash[:klass].send(hook, *hash[:args])
110
110
  end
111
111
  end
112
+ queue(queue_name).size
112
113
  end
113
114
 
114
115
  # Call perform on the job class
@@ -22,6 +22,15 @@ module ResqueUnit
22
22
  enqueue_unit(queue_for(klass), {:klass => klass, :args => decode(encode(args)), :timestamp => timestamp})
23
23
  end
24
24
 
25
+ def remove_delayed(klass, *args)
26
+ queue = Resque.queue(queue_for(klass))
27
+ if args # retrieve the elements that match klass and args in the queue
28
+ args = Resque.normalized_args(args)
29
+ queue.delete_if { |e| e[:klass] == klass && e[:args] == args }
30
+ else # if no args were passed, retrieve all queued jobs that match klass
31
+ queue.delete_if {|e| e[:klass] == klass}
32
+ end
33
+ end
25
34
  end
26
35
 
27
36
  Resque.send(:extend, Scheduler)
@@ -27,6 +27,20 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
27
27
  assert_not_queued_in(300, MediumPriorityJob)
28
28
  end
29
29
 
30
+ context "and then the job is removed with #remove_delayed" do
31
+ setup do
32
+ Resque.remove_delayed(MediumPriorityJob)
33
+ end
34
+ should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
35
+ assert_not_queued_at(300, MediumPriorityJob)
36
+ end
37
+
38
+ should "fail the assert_queued_at(@time, MediumPriorityJob) assertion" do
39
+ assert_raise Test::Unit::AssertionFailedError do
40
+ assert_queued_at(300, MediumPriorityJob)
41
+ end
42
+ end
43
+ end
30
44
  end
31
45
 
32
46
  context "A task that schedules a resque job in 5 minutes with arguments" do
@@ -44,6 +58,40 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
44
58
  assert_queued_in(600, JobWithArguments, [2, 'test'])
45
59
  end
46
60
  end
61
+
62
+ context "and then the job is removed with #remove_delayed" do
63
+ setup do
64
+ Resque.remove_delayed(JobWithArguments, 1, 'test')
65
+ end
66
+ should "pass the assert_not_queued_at(@time, JobWithArguments, 1, 'test') assertion" do
67
+ assert_not_queued_at(600, JobWithArguments, 1, 'test')
68
+ end
69
+
70
+ should "fail the assert_queued_at(@time, JobWithArguments, 1, 'test') assertion" do
71
+ assert_raise Test::Unit::AssertionFailedError do
72
+ assert_queued_at(600, JobWithArguments, 1, 'test')
73
+ end
74
+ end
75
+ end
76
+
77
+ context "and a job of the same class but with different arguments is removed with #remove_delayed" do
78
+ setup do
79
+ Resque.remove_delayed(JobWithArguments, 2, 'test')
80
+ end
81
+ should "still pass the assert_queued_in(600, JobWithArguments) assertion" do
82
+ assert_queued_in(600, JobWithArguments)
83
+ end
84
+
85
+ should "still pass the assert_queued_in(600, JobWithArguments, [1, 'test']) assertion" do
86
+ assert_queued_in(600, JobWithArguments, [1, 'test'])
87
+ end
88
+
89
+ should "still fail the assert_queued_in(600, JobWithArguments, [2, 'test']) assertion" do
90
+ assert_raise Test::Unit::AssertionFailedError do
91
+ assert_queued_in(600, JobWithArguments, [2, 'test'])
92
+ end
93
+ end
94
+ end
47
95
  end
48
96
 
49
97
  context "A task that schedules a resque job on Sept. 6, 2016 at 6am" do
@@ -65,6 +113,20 @@ class ResqueUnitSchedulerTest < Test::Unit::TestCase
65
113
  should "pass the assert_not_queued_at(@time - 100, MediumPriorityJob) assertion" do
66
114
  assert_not_queued_at(@time - 100, MediumPriorityJob)
67
115
  end
68
- end
69
116
 
117
+ context "and then the job is removed with #remove_delayed" do
118
+ setup do
119
+ Resque.remove_delayed(MediumPriorityJob)
120
+ end
121
+ should "pass the assert_not_queued_at(@time, MediumPriorityJob) assertion" do
122
+ assert_not_queued_at(@time, MediumPriorityJob)
123
+ end
124
+
125
+ should "fail the assert_queued_at(@time, MediumPriorityJob) assertion" do
126
+ assert_raise Test::Unit::AssertionFailedError do
127
+ assert_queued_at(@time, MediumPriorityJob)
128
+ end
129
+ end
130
+ end
131
+ end
70
132
  end
@@ -18,7 +18,11 @@ class ResqueUnitTest < Test::Unit::TestCase
18
18
 
19
19
  context "A task that schedules a resque job" do
20
20
  setup do
21
- Resque.enqueue(LowPriorityJob)
21
+ @returned = Resque.enqueue(LowPriorityJob)
22
+ end
23
+
24
+ should 'return a value that evaluates to true' do
25
+ assert @returned
22
26
  end
23
27
 
24
28
  should "pass the assert_queued(job) assertion" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 4
9
- version: 0.3.4
8
+ - 5
9
+ version: 0.3.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Justin Weiss
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-14 00:00:00 -08:00
17
+ date: 2011-02-24 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -95,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - ">="
97
97
  - !ruby/object:Gem::Version
98
- hash: 1471830878985269609
98
+ hash: -3582999941534003168
99
99
  segments:
100
100
  - 0
101
101
  version: "0"
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - ">="
106
106
  - !ruby/object:Gem::Version
107
- hash: 1471830878985269609
107
+ hash: -3582999941534003168
108
108
  segments:
109
109
  - 0
110
110
  version: "0"