require 'spec_helper' require 'integration/eventmachine/spec_helper' describe AMQ::Client::EventMachineClient, "Basic.Get" do include EventedSpec::SpecHelper default_timeout 1 context "when set two messages beforehand" do let(:messages) { ["message 1", "message 2"] } it "synchronously fetches all the messages" do @received_messages = [] em_amqp_connect do |client| channel = AMQ::Client::Channel.new(client, 1) channel.open do queue = AMQ::Client::Queue.new(client, channel) queue.declare(false, false, false, true) do queue.bind("amq.fanout") exchange = AMQ::Client::Exchange.new(client, channel, "amq.fanout", :fanout) messages.each do |message| exchange.publish(message) do puts "Published a message: #{message}" end end queue.get(true) do |method, header, payload| puts "Got #{payload}" @received_messages << payload end queue.get(true) do |method, header, payload| puts "Got #{payload}" @received_messages << payload end delayed(0.5) { # need to delete the queue manually because #get doesn't count as consumption, # hence, no auto-delete queue.delete } done(0.75) { @received_messages.should =~ messages } end end end end end context "when sent no messages beforehand" do it "should receive nils" do em_amqp_connect do |client| channel = AMQ::Client::Channel.new(client, 1) channel.open do queue = AMQ::Client::Queue.new(client, channel) queue.declare(false, false, false, true) queue.bind("amq.fanout") exchange = AMQ::Client::Exchange.new(client, channel, "amq.fanout", :fanout) queue.get(true) do |method, header, payload| header.should be_nil payload.should be_nil queue.delete done(0.5) end # get end end # em_amqp_connect end # it end # context end # describe