require File.dirname(__FILE__) + '/test_helper.rb' context "the invoker 'basic poller'" do setup do routing = Workling::Routing::ClassAndMethodRouting.new @client = Workling::Clients::MemoryQueueClient.new @client.connect @invoker = Workling::Remote::Invokers::BasicPoller.new(routing, @client.class) end specify "should not explode when listen is called, and stop nicely when stop is called. " do connection = mock() connection.expects(:active?).at_least_once.returns(true) ActiveRecord::Base.expects(:connection).at_least_once.returns(connection) client = mock() client.expects(:retrieve).at_least_once.returns("hi") client.expects(:connect).at_least_once.returns(true) client.expects(:close).at_least_once.returns(true) Workling::Clients::MemoryQueueClient.expects(:new).at_least_once.returns(client) # Don't take longer than 10 seconds to shut this down. Timeout::timeout(10) do listener = Thread.new { @invoker.listen } @invoker.stop listener.join end end end