Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
tree: 8ec934eef9
Fetching contributors…

Cannot retrieve contributors at this time

79 lines (53 sloc) 2.189 kb
require File.dirname(__FILE__) + '/database'
class SimpleJob
cattr_accessor :runs; self.runs = 0
def perform; @@runs += 1; end
end
class RandomRubyObject
def say_hello
'hello'
end
end
class StoryReader
def read(story)
"Epilog: #{story.tell}"
end
end
describe 'random ruby objects' do
before { reset_db }
it "should respond_to :send_later method" do
RandomRubyObject.new.respond_to?(:send_later)
end
it "should raise a ArgumentError if send_later is called but the target method doesn't exist" do
lambda { RandomRubyObject.new.send_later(:method_that_deos_not_exist) }.should raise_error(NoMethodError)
end
it "should add a new entry to the job table when send_later is called on it" do
Delayed::Job.count.should == 0
RandomRubyObject.new.send_later(:to_s)
Delayed::Job.count.should == 1
end
it "should run get the original method executed when the job is performed" do
RandomRubyObject.new.send_later(:say_hello)
Delayed::Job.count.should == 1
end
it "should store the object as string if its an active record" do
story = Story.create :text => 'Once upon...'
story.send_later(:tell)
job = Delayed::Job.find(:first)
job.payload_object.class.should == Delayed::PerformableMethod
job.payload_object.object.should == 'AR:Story:1'
job.payload_object.method.should == :tell
job.payload_object.args.should == []
job.payload_object.perform.should == 'Once upon...'
end
it "should store arguments as string if they an active record" do
story = Story.create :text => 'Once upon...'
reader = StoryReader.new
reader.send_later(:read, story)
job = Delayed::Job.find(:first)
job.payload_object.class.should == Delayed::PerformableMethod
job.payload_object.method.should == :read
job.payload_object.args.should == ['AR:Story:1']
job.payload_object.perform.should == 'Epilog: Once upon...'
end
end
Jump to Line
Something went wrong with that request. Please try again.