Sha256: 6837ff76d1368b0bf56f1bfdbc5c7657efda894272d33d9e82b6faa3a675930a

Contents?: true

Size: 2 KB

Versions: 8

Compression:

Stored size: 2 KB

Contents

require 'spec_helper'
require 'mercury'

describe Mercury do
  include MercuryFakeSpec

  # These tests just cover the basics. Most of the testing is
  # done in the Mercury::Monadic spec for convenience.

  let!(:sent) { { 'a' => 1 } }
  let!(:source) { 'test-exchange' }
  let!(:queue) { 'test-queue' }

  describe '::open' do
    it 'opens a mercury instance' do
      em do
        Mercury.open do |m|
          expect(m).to be_a Mercury
          m.close do
            done
          end
        end
      end
    end
  end

  describe '#close' do
    itt 'closes the connection' do
      em do
        Mercury.open do |m|
          m.close do
            expect { m.publish(queue, {'a' => 1}) }.to raise_error /connection is closed/
            done
          end
        end
      end
    end
  end

  describe '#start_listener' do
    itt 'listens for messages' do
      with_mercury do |m|
        received = []
        m.start_listener(source, received.method(:push)) do
          m.publish(source, sent) do
            em_wait_until(proc{received.any?}) do
              expect(received.size).to eql 1
              expect(received[0].content).to eql sent
              m.close do
                done
              end
            end
          end
        end
      end
    end
  end

  describe '#start_worker' do
    itt 'listens for messages' do
      with_mercury do |m|
        received = []
        m.start_worker(queue, source, received.method(:push)) do
          m.publish(source, sent) do
            em_wait_until(proc{received.any?}) do
              expect(received.size).to eql 1
              expect(received[0].content).to eql sent
              m.close do
                done
              end
            end
          end
        end
      end
    end
  end

  def with_mercury(&block)
    sources = [source]
    queues = [queue]
    em { delete_sources_and_queues_cps(sources, queues).run{done} }
    em { Mercury.open(&block) }
    em { delete_sources_and_queues_cps(sources, queues).run{done} }
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mercury_amqp-0.1.9 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.7 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.6 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.5 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.4 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.3 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.2 spec/lib/mercury/mercury_spec.rb
mercury_amqp-0.1.0 spec/lib/mercury/mercury_spec.rb