Sha256: 0c1d9543dd7b1bba8fe5c44b0a25e5be7b63246a889d846a7c03dfe30f643a58

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

require 'torquebox/messaging/future'

include TorqueBox::Messaging

class Future
  attr_writer :started
  attr_writer :complete
  attr_writer :error
  attr_writer :result
end

describe TorqueBox::Messaging::Future do
  
  before(:each) do
    @queue = mock( Queue )
    @future = Future.new( @queue )
  end

  describe "#result" do

    it "should raise if it fails to start before timeout" do
      @future.stub(:receive)
      lambda { @future.result( 1 ) }.should raise_error( TimeoutException )
    end

    it "should raise if it fails to complete before timeout" do
      @future.stub(:receive)
      @future.started = true
      lambda { @future.result( 1 ) }.should raise_error( TimeoutException )
    end

    it "should raise if a remote error occurs" do
      @future.stub(:receive)
      @future.started = true
      @future.error = ArgumentError.new
      lambda { @future.result( 1 ) }.should raise_error( ArgumentError )
    end

    it "should return the result if complete" do
      @future.stub(:receive)
      @future.started = true
      @future.complete = true
      @future.result = :success!
      @future.result.should == :success!
    end

  end

  describe "#method_missing" do

    it "should delegate to #result" do
      @result = mock(:result)
      @future.should_receive(:result).and_return(@result)
      @result.should_receive(:blah)
      @future.blah
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
torquebox-messaging-1.1-java spec/future_spec.rb