Sha256: 2df42875da5df9e1767d9ae0e9b4f77a95c8edff574475785def39daa58af5d0

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

require 'test_helper'

module Alondra

  class MessageQueueTest < ActiveSupport::TestCase
    setup do
      @original_event_router = MessageQueue.instance.send :event_router
      @router = MockEventRouter.new

      @chat = Chat.create(:name => 'Silly chat')

      MessageQueue.instance.instance_variable_set :@event_router, @router
      @event = Event.new :event => :custom, :resource => @chat, :channel => '/chats/'
    end

    teardown do
      MessageQueue.instance.instance_variable_set :@event_router, @original_event_router
    end

    test "a message pushed asynchronously to the queue is received by the event router" do
      assert MessageQueueClient.instance.class == AsyncMessageQueueClient

      MessageQueueClient.push @event

      sleep(0.1)

      assert received(@event)
    end

    test "a message pushed synchronously to the queue is received by the event router" do

      client = MessageQueueClient.sync_instance
      context = client.send :context
      assert context.class == ZMQ::Context

      client.send_message(@event)

      sleep(0.1)

      assert received(@event)
    end

    test "message queue still works when an exception is thrown while processing an event" do
      3.times do
        bogus = BogusEvent.new :event => :custom, :resource => @chat, :channel => '/chats/'

        begin
          MessageQueueClient.push bogus
        rescue BogusException
          puts "rescued exception"
        end
      end

      MessageQueueClient.push @event

      sleep(0.1)

      assert received(@event)
    end

    def received(event)
      @router.received_events.find do |matching_event|
        matching_event.type == event.type &&
        matching_event.resource_type == event.resource_type &&
        matching_event.resource.id == event.resource.id &&
        matching_event.channel_name == event.channel_name
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alondra-0.0.4 test/models/message_queue_test.rb
alondra-0.0.3 test/models/message_queue_test.rb