class CfMessageBus::MockMessageBus
Attributes
published_messages[R]
published_synchronous_messages[R]
Public Class Methods
new(config = {})
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 5 def initialize(config = {}) @logger = config[:logger] @requests = {} @synchronous_requests = {} @published_messages = [] @published_synchronous_messages = [] reset end
Public Instance Methods
clear_published_messages()
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 66 def clear_published_messages @published_messages.clear end
connected?()
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 49 def connected? true end
do_recovery()
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 62 def do_recovery @recovery.call if @recovery end
has_published?(subject)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 70 def has_published?(subject) @published_messages.find { |message| message[:subject] == subject } end
has_published_with_message?(subject, message)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 74 def has_published_with_message?(subject, message) @published_messages.find do |publication| publication[:subject] == subject && publication[:message] == message end end
has_requested_synchronous_messages?(subject, data=nil, options={})
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 81 def has_requested_synchronous_messages?(subject, data=nil, options={}) @published_synchronous_messages.find do |publication| publication[:subject] == subject && publication[:data] == data && publication[:options] == options end end
publish(subject, message = nil, inbox = nil, &callback)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 19 def publish(subject, message = nil, inbox = nil, &callback) @subscriptions[subject].each do |subscription| subscription.call(stringify_keys(message)) end @published_messages.push({subject: subject, message: message, inbox: inbox, callback: callback}) callback.call if callback end
recover(&block)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 45 def recover(&block) @recovery = block end
request(subject, data=nil, _={}, &blk)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 29 def request(subject, data=nil, _={}, &blk) @requests[subject] = blk publish(subject, data) subject end
reset()
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 89 def reset @subscriptions = Hash.new { |hash, key| hash[key] = [] } end
respond_to_request(request_subject, data)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 57 def respond_to_request(request_subject, data) block = @requests.fetch(request_subject) { lambda { |data| nil } } block.call(stringify_keys(data)) end
respond_to_synchronous_request(request_subject, data)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 53 def respond_to_synchronous_request(request_subject, data) @synchronous_requests[request_subject] = data end
subscribe(subject, opts = {}, &blk)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 14 def subscribe(subject, opts = {}, &blk) @subscriptions[subject] << blk subject end
synchronous_request(subject, data=nil, options={})
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 35 def synchronous_request(subject, data=nil, options={}) @published_synchronous_messages.push(subject: subject, data: data, options: options) stringify_keys(@synchronous_requests[subject]) end
unsubscribe(subscription_id)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 40 def unsubscribe(subscription_id) @subscriptions.delete(subscription_id) @requests.delete(subscription_id) end
Private Instance Methods
stringify_keys(object)
click to toggle source
# File lib/cf_message_bus/mock_message_bus.rb, line 95 def stringify_keys(object) case object when Array object.map {|k| stringify_keys(k) } when Hash object.inject({}) do |memo, (key, value)| memo[key.to_s] = stringify_keys(value) memo end else object end end