resque_unit 0.2.4 → 0.2.5

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.
@@ -5,23 +5,29 @@ module Resque
5
5
  # Resets all the queues to the empty state. This should be called in
6
6
  # your test's +setup+ method until I can figure out a way for it to
7
7
  # automatically be called.
8
- def self.reset!
9
- @queue = Hash.new { |h, k| h[k] = [] }
8
+ #
9
+ # If <tt>queue_name</tt> is given, then resets only that queue.
10
+ def self.reset!(queue_name = nil)
11
+ if @queue && queue_name
12
+ @queue[queue_name] = []
13
+ else
14
+ @queue = Hash.new { |h, k| h[k] = [] }
15
+ end
10
16
  end
11
17
 
12
18
  # Returns an array of all the jobs that have been queued. Each
13
19
  # element is of the form +{:klass => klass, :args => args}+ where
14
20
  # +klass+ is the job's class and +args+ is an array of the arguments
15
21
  # passed to the job.
16
- def self.queue(queue)
22
+ def self.queue(queue_name)
17
23
  self.reset! unless @queue
18
- @queue[queue]
24
+ @queue[queue_name]
19
25
  end
20
26
 
21
27
  # Executes all jobs in all queues in an undefined order.
22
28
  def self.run!
23
29
  old_queue = @queue.dup
24
- reset!
30
+ self.reset!
25
31
 
26
32
  old_queue.each do |k, v|
27
33
  while job = v.shift
@@ -30,10 +36,20 @@ module Resque
30
36
  end
31
37
  end
32
38
 
39
+ # Executes all jobs in the given queue in an undefined order.
40
+ def self.run_for!(queue_name)
41
+ jobs = self.queue(queue_name)
42
+ self.reset!(queue_name)
43
+
44
+ while job = jobs.shift
45
+ job[:klass].perform(*job[:args])
46
+ end
47
+ end
48
+
33
49
  # Returns the size of the given queue
34
- def self.size(queue)
50
+ def self.size(queue_name)
35
51
  self.reset! unless @queue
36
- @queue[queue].length
52
+ @queue[queue_name].length
37
53
  end
38
54
 
39
55
  # :nodoc:
@@ -15,7 +15,7 @@ class ResqueUnitTest < Test::Unit::TestCase
15
15
  assert_equal 1, Resque.queue(MediumPriorityJob.queue).length
16
16
  end
17
17
  end
18
-
18
+
19
19
  context "A task that schedules a resque job" do
20
20
  setup do
21
21
  Resque.enqueue(LowPriorityJob)
@@ -137,6 +137,30 @@ class ResqueUnitTest < Test::Unit::TestCase
137
137
  end
138
138
  end
139
139
 
140
+ context "A task in a different queue" do
141
+ setup do
142
+ Resque.enqueue(LowPriorityJob)
143
+ Resque.enqueue(HighPriorityJob)
144
+ end
145
+
146
+ should "add a LowPriorityJob" do
147
+ assert_queued(LowPriorityJob)
148
+ end
149
+
150
+ should "add a HighPriorityJob" do
151
+ assert_queued(HighPriorityJob)
152
+ end
153
+
154
+ context ", when Resque.run_for! is called," do
155
+ should "run only tasks in the high priority queue" do
156
+ Resque.run_for!(Resque.queue_for(HighPriorityJob))
157
+
158
+ assert_queued(LowPriorityJob)
159
+ assert_not_queued(HighPriorityJob)
160
+ end
161
+ end
162
+ end
163
+
140
164
  context "An assertion message" do
141
165
  context "of assert_queued" do
142
166
  should "include job class and queue content" do
data/test/sample_jobs.rb CHANGED
@@ -20,6 +20,13 @@ class MediumPriorityJob
20
20
  end
21
21
  end
22
22
 
23
+ class HighPriorityJob
24
+ @queue = :high
25
+
26
+ def self.perform
27
+ end
28
+ end
29
+
23
30
  class JobWithArguments
24
31
  @queue = :medium
25
32
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_unit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 5
10
+ version: 0.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Weiss