Skip to content

Commit d452dc0

Browse files
committed
Ensure enqueued classes pass Resque validation. Fixes #1
1 parent f774ec1 commit d452dc0

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

lib/resque/mock.rb

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def enqueue_in(delay, klass, *args)
2626
end
2727

2828
def defer(klass, args, delay = nil)
29+
validate(klass)
30+
2931
if @async
3032
add_job('payload' => { 'class' => klass, 'args' => args }, 'delay' => delay)
3133
else

spec/mock_spec.rb

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
#require 'spec_helper'
21
require 'resque/mock'
32

43
Resque.mock!
54

65
class Performer
6+
def self.queue
7+
'performings'
8+
end
9+
710
def self.run?
811
!!@args
912
end
@@ -41,10 +44,22 @@ def self.perform(*args)
4144
end
4245
end
4346

47+
class QueuelessPerformer < Performer
48+
class << self
49+
undef :queue
50+
end
51+
end
52+
4453
describe Resque do
4554
before { Performer.reset! }
4655

4756
describe "synchronously" do
57+
it "ensures the queue can be determined" do
58+
expect {
59+
Resque.enqueue(QueuelessPerformer, 'hello', 'there')
60+
}.to raise_error(Resque::NoQueueError)
61+
end
62+
4863
it "performs jobs without delay" do
4964
Resque.enqueue(Performer, 'hello', 'there')
5065
Performer.should be_run

0 commit comments

Comments
 (0)