Sha256: 8cd1b6f394a94e3a660c125f058c44ba6698d54b8c97408fa0c9d354e9bb60df

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe Candygram::Delivery do

  before(:each) do
    @this = Explosive.new
  end
    
  it "adds the method to the delivery queue" do
    @this.kaboom_later
    Candygram.queue.find(:class => /Explosive/, :method => "kaboom").count.should == 1
  end
  
  it "captures the arguments passed to the method" do
    id = @this.repeated_kaboom_later('Venus', 15)
    doc = Candygram.queue.find_one(id)
    doc['arguments'].should == ['Venus', 15]
  end
  
  it "takes an object as an argument" do
    m = Missile.new
    id = @this.object_kaboom_later('Pluto', 6, m)
    doc = Candygram.queue.find_one(id)
    doc['arguments'][2].should be_a_kind_of(Hash)
  end
  
  it "sets the time it was created" do
    id = @this.kaboom_later
    (Time.now.utc - Candygram.queue.find_one(id)['created_at']).should < 2
  end
  
  it "wraps itself up as its own package" do
    @this.weight = 15
    id = @this.kaboom_later
    unwrap = Candygram::Wrapper.unwrap(Candygram.queue.find_one(id)['package'])
    unwrap.should be_an(Explosive)
    unwrap.weight.should == 15
  end
  
  describe "for _later" do
    it "can queue a method call using _later" do
      @this.kaboom_later.should_not be_nil
    end

    it "sets the time for delivery to now" do
      id = @this.kaboom_later
      (Time.now.utc - Candygram.queue.find_one(id)['deliver_at']).should < 2
    end
    
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
candygram-0.1.0 spec/candygram/delivery_spec.rb