Sha256: 07f33bf487fbf58398e33ed11e6f8396721e71345638368ce30677e7bb31c7c2

Contents?: true

Size: 1.95 KB

Versions: 4

Compression:

Stored size: 1.95 KB

Contents

require 'spec_helper'

step 'I am consuming' do
  set_event_routing
  set_event_definitions
  RabbitFeed::ConsumerConnection.instance # Bind the queue
  @consumer_thread = Thread.new { RabbitFeed::Consumer.run }
end

step 'I publish an event' do
  publish 'test'
end

step 'I receive that event' do
  event = wait_for_event
  assert_event_presence event
end

step 'I publish an event that cannot be processed by the consumer' do
  publish 'test_failure'
end

step 'the event remains on the queue' do
  event = nil
  2.times { event = wait_for_event }
  assert_event_presence event
end

module Turnip::Steps
  def publish(event_name)
    @event_text = "#{event_name}_#{Time.now.iso8601(6)}"
    RabbitFeed::Producer.publish_event event_name, 'field' => @event_text
  end

  def assert_event_presence(event)
    expect(event).to_not be_nil
    expect(event.payload[:field]).to eq @event_text
  end

  def wait_for_event
    begin
      Timeout.timeout(2.0) do
        sleep 0.1 until @consumed_events.any?
      end
    rescue Timeout::Error
    end
    @consumed_events.pop
  end

  def set_event_definitions
    EventDefinitions do
      define_event('test', version: '1.0.0') do
        defined_as do
          'The test event'
        end
        payload_contains do
          field('field', type: 'string', definition: 'The field')
        end
      end
      define_event('test_failure', version: '1.0.0') do
        defined_as do
          'The test failure event'
        end
        payload_contains do
          field('field', type: 'string', definition: 'The field')
        end
      end
    end
  end

  def set_event_routing
    consumed_events  = []
    @consumed_events = consumed_events

    EventRouting do
      accept_from('rabbit_feed') do
        event('test') do |event|
          consumed_events << event
        end
        event('test_failure') do |event|
          consumed_events << event
          raise 'event processing failure'
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rabbit_feed-3.0.3 spec/features/step_definitions/connectivity_steps.rb
rabbit_feed-3.0.2 spec/features/step_definitions/connectivity_steps.rb
rabbit_feed-3.0.1 spec/features/step_definitions/connectivity_steps.rb
rabbit_feed-3.0.0 spec/features/step_definitions/connectivity_steps.rb