Sha256: a5ee979ac6e54fc6aa5e586daf65efdbb0564243090dd0fcfc09b60004c35ff9

Contents?: true

Size: 1.84 KB

Versions: 4

Compression:

Stored size: 1.84 KB

Contents

require 'torquebox/messaging/task'

class MyTestTask < TorqueBox::Messaging::Task 
  attr_accessor :payload
end

describe TorqueBox::Messaging::Task do

  it "should send payload correctly" do
    expectation = [{:method => :payload=, :payload => {:foo => 'bar'}}, { }]
    queue = mock("queue")
    queue.should_receive(:publish).with(*expectation) 
    TorqueBox::Messaging::Queue.should_receive(:new).with(MyTestTask.queue_name).and_return(queue)

    MyTestTask.async(:payload=, :foo => 'bar')
  end

  it "should process payload correctly" do
    expectation = {:method => :payload=, :payload => {:foo => 'bar'}}
    message = mock("message")
    message.should_receive(:decode).and_return(expectation)

    task = MyTestTask.new
    task.process! message
    task.payload[:foo].should == 'bar'
  end

  it "should handle nil payload as empty hash" do
    queue = mock("queue")
    queue.should_receive(:publish).with(hash_including(:payload => {}), {}) 
    TorqueBox::Messaging::Queue.should_receive(:new).with(MyTestTask.queue_name).and_return(queue)
    MyTestTask.async(:payload=)
  end


  describe "queue_name" do
    before(:each) do
      ENV['TORQUEBOX_APP_NAME'] = 'app_name'
    end

    after(:each) do
      ENV.delete('TORQUEBOX_APP_NAME')
    end
    
    it "should derive the queue name from the class name" do
      MyTestTask.queue_name.should =~ %r{/my_test$}
    end
    
    it "should include the app name in the queue name" do
      MyTestTask.queue_name.should =~ %r{/app_name/}
    end

    {
      'FooTask' => 'foo',
      'FooBarTask' => 'foo_bar',
      'Foo::BarBazTask' => 'foo/bar_baz'
    }.each do |given, expected|
      it "should generate the proper queue name for #{given}" do
        MyTestTask.stub(:name).and_return(given)
        MyTestTask.queue_name.should == "/queues/torquebox/app_name/tasks/#{expected}"
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
torquebox-messaging-1.0.1-java spec/task_spec.rb
torquebox-messaging-1.0.0-java spec/task_spec.rb
torquebox-messaging-1.0.0.CR2-java spec/task_spec.rb
torquebox-messaging-1.0.0.CR1-java spec/task_spec.rb