forked from tobi/delayed_job
/
mongo_job_spec.rb
62 lines (50 loc) · 1.81 KB
/
mongo_job_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
62
require 'spec_helper'
require 'delayed/backend/mongo'
MongoMapper.connection = Mongo::Connection.new nil, nil, :logger => ActiveRecord::Base.logger
MongoMapper.database = 'delayed_job'
describe Delayed::Backend::Mongo::Job do
before(:all) do
@backend = Delayed::Backend::Mongo::Job
end
before(:each) do
MongoMapper.database.collections.each(&:remove)
end
it_should_behave_like 'a backend'
describe "delayed method" do
class MongoStoryReader
def read(story)
"Epilog: #{story.tell}"
end
end
class MongoStory
include MongoMapper::Document
key :text, String
def tell
text
end
end
it "should ignore not found errors because they are permanent" do
story = MongoStory.create :text => 'Once upon a time…'
job = story.send_later(:tell)
story.destroy
lambda { job.invoke_job }.should_not raise_error
end
it "should store the object as string" do
story = MongoStory.create :text => 'Once upon a time…'
job = story.send_later(:tell)
job.payload_object.class.should == Delayed::PerformableMethod
job.payload_object.object.should == "LOAD;MongoStory;#{story.id}"
job.payload_object.method.should == :tell
job.payload_object.args.should == []
job.payload_object.perform.should == 'Once upon a time…'
end
it "should store arguments as string" do
story = MongoStory.create :text => 'Once upon a time…'
job = MongoStoryReader.new.send_later(:read, story)
job.payload_object.class.should == Delayed::PerformableMethod
job.payload_object.method.should == :read
job.payload_object.args.should == ["LOAD;MongoStory;#{story.id}"]
job.payload_object.perform.should == 'Epilog: Once upon a time…'
end
end
end