module Tochtli::Test::Controller

Public Instance Methods

after_teardown() click to toggle source
Calls superclass method
# File lib/tochtli/test/controller.rb, line 37
def after_teardown
  self.class.controller_class.stop
  super
end
before_setup() click to toggle source
Calls superclass method Tochtli::Test::Helpers#before_setup
# File lib/tochtli/test/controller.rb, line 28
def before_setup
  super
  @cache  = Object.const_defined?(:ActiveSupport) ? ActiveSupport::Cache::MemoryStore.new : Tochtli::Test::MemoryCache.new
  @logger = Tochtli.logger
  self.class.controller_class.setup(@connection, @cache, @logger)
  @dispatcher = self.class.controller_class.dispatcher
  @message_index = 0
end
publish(message) click to toggle source
# File lib/tochtli/test/controller.rb, line 42
def publish(message)
  @message_index += 1
  delivery_info  = TestDeliveryInfo.new(message.routing_key)
  properties     = TestMessageProperties.new("test.reply", @message_index)
  payload        = message.to_json

  @message, @reply = nil

  unless @dispatcher.process_message(delivery_info, properties, payload, {})
    if (reply = @connection.publications.first) && reply[:message].is_a?(Tochtli::ErrorMessage)
      raise "Process error: #{reply[:message].message}"
    else
      raise RoutingNotFound, "Message #{message.class.name} not processed by #{self.class.controller_class} - #{message.inspect}."
    end
  end

  reply = @connection.publications.first
  if reply && reply[:routing_key] == "test.reply" && reply[:correlation_id] == @message_index
    @connection.publications.shift
    @reply = reply[:message]
  end
end