Sha256: 5825fef982cb7bff3c60e65068cb02ad4f91d64d7c09723a72abfd0a5543e779

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require 'spec_helper'

require 'delayed/backend/mongo_mapper'

describe Delayed::Backend::MongoMapper::Job do
  before(:all) do
    @backend = Delayed::Backend::MongoMapper::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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
moneypools-delayed_job-1.8.4 spec/backend/mongo_mapper_job_spec.rb