Sha256: 636926a517975a5b40b31bcddbbd345d9e8afd0535f93f053683f0b797826ee3

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

require 'spec_helper'
require 'snoopka/listener'

describe Snoopka::Listener do
  let(:settings_hash) { {host: "127.0.0.1", port: 9092} }
  let(:listener)      { Snoopka::Listener.new settings_hash }

  it 'retains the hash of settings' do
    expect(listener.settings).to eq settings_hash
  end

  it 'exposes the list of observers' do
    expect(listener.observers).to_not eq nil
  end

  it 'adds an observer to the listener' do
    listener.add_observer 'awesomecommerce' do |message|
      puts message.inspect
    end
    expect(listener.observer_count).to eq 1
  end

  context 'consumer' do

    let(:mocked_socket) { double(TCPSocket) }
    before :each do
      TCPSocket.stub(:new).and_return(mocked_socket) # don't use a real socket
    end

    it 'creates a consumer given a topic and settings' do
      consumer = listener.create_consumer('awesomecommerce')
      expect(consumer).to_not be_nil
    end

    it 'peforms the block when a message is received in the subscribed topic' do
      bytes = [0].pack("n") + [1].pack('N') + [21346].pack('q').reverse # it's magic!!
      allow(mocked_socket).to receive(:read).and_return(bytes)
      allow(mocked_socket).to receive(:write)

      @test = 0
      listener.add_observer 'awesomecommerce' do |message|
        @test += 1
      end

      listener.consume
      expect(@test).to eq 1
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
snoopka-0.0.1 spec/listener_spec.rb