Module: Tochtli::Test::Controller

Extended by:
ControllerClassSupport, UnitTestSupport
Includes:
Helpers
Defined in:
lib/tochtli/test/controller.rb

Defined Under Namespace

Modules: ControllerClassSupport Classes: RoutingNotFound

Instance Method Summary collapse

Methods included from UnitTestSupport

append_features, included

Methods included from ControllerClassSupport

included

Methods included from Helpers

#assert_published, #expect_published

Instance Method Details

#after_teardownObject



37
38
39
40
# File 'lib/tochtli/test/controller.rb', line 37

def after_teardown
  self.class.controller_class.stop
  super
end

#before_setupObject



28
29
30
31
32
33
34
35
# 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) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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