Class: CfMessageBus::MockMessageBus
- Inherits:
-
Object
- Object
- CfMessageBus::MockMessageBus
- Defined in:
- lib/cf_message_bus/mock_message_bus.rb
Instance Attribute Summary collapse
-
#published_messages ⇒ Object
readonly
Returns the value of attribute published_messages.
-
#published_synchronous_messages ⇒ Object
readonly
Returns the value of attribute published_synchronous_messages.
Instance Method Summary collapse
- #clear_published_messages ⇒ Object
- #connected? ⇒ Boolean
- #do_recovery ⇒ Object
- #has_published?(subject) ⇒ Boolean
- #has_published_with_message?(subject, message) ⇒ Boolean
- #has_requested_synchronous_messages?(subject, data = nil, options = {}) ⇒ Boolean
-
#initialize(config = {}) ⇒ MockMessageBus
constructor
A new instance of MockMessageBus.
- #publish(subject, message = nil, inbox = nil, &callback) ⇒ Object
- #recover(&block) ⇒ Object
- #request(subject, data = nil, _ = {}, &blk) ⇒ Object
- #reset ⇒ Object
- #respond_to_request(request_subject, data) ⇒ Object
- #respond_to_synchronous_request(request_subject, data) ⇒ Object
- #subscribe(subject, opts = {}, &blk) ⇒ Object
- #synchronous_request(subject, data = nil, options = {}) ⇒ Object
- #unsubscribe(subscription_id) ⇒ Object
Constructor Details
#initialize(config = {}) ⇒ MockMessageBus
Returns a new instance of MockMessageBus.
5 6 7 8 9 10 11 12 |
# 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 |
Instance Attribute Details
#published_messages ⇒ Object (readonly)
Returns the value of attribute published_messages.
3 4 5 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 3 def @published_messages end |
#published_synchronous_messages ⇒ Object (readonly)
Returns the value of attribute published_synchronous_messages.
3 4 5 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 3 def @published_synchronous_messages end |
Instance Method Details
#clear_published_messages ⇒ Object
66 67 68 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 66 def @published_messages.clear end |
#connected? ⇒ Boolean
49 50 51 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 49 def connected? true end |
#do_recovery ⇒ Object
62 63 64 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 62 def do_recovery @recovery.call if @recovery end |
#has_published?(subject) ⇒ Boolean
70 71 72 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 70 def has_published?(subject) @published_messages.find { || [:subject] == subject } end |
#has_published_with_message?(subject, message) ⇒ Boolean
74 75 76 77 78 79 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 74 def (subject, ) @published_messages.find do |publication| publication[:subject] == subject && publication[:message] == end end |
#has_requested_synchronous_messages?(subject, data = nil, options = {}) ⇒ Boolean
81 82 83 84 85 86 87 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 81 def (subject, data=nil, ={}) @published_synchronous_messages.find do |publication| publication[:subject] == subject && publication[:data] == data && publication[:options] == end end |
#publish(subject, message = nil, inbox = nil, &callback) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 19 def publish(subject, = nil, inbox = nil, &callback) @subscriptions[subject].each do |subscription| subscription.call(stringify_keys()) end @published_messages.push({subject: subject, message: , inbox: inbox, callback: callback}) callback.call if callback end |
#recover(&block) ⇒ Object
45 46 47 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 45 def recover(&block) @recovery = block end |
#request(subject, data = nil, _ = {}, &blk) ⇒ Object
29 30 31 32 33 |
# 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 ⇒ Object
89 90 91 |
# 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) ⇒ Object
57 58 59 60 |
# 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) ⇒ Object
53 54 55 |
# 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) ⇒ Object
14 15 16 17 |
# 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 = {}) ⇒ Object
35 36 37 38 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 35 def synchronous_request(subject, data=nil, ={}) @published_synchronous_messages.push(subject: subject, data: data, options: ) stringify_keys(@synchronous_requests[subject]) end |
#unsubscribe(subscription_id) ⇒ Object
40 41 42 43 |
# File 'lib/cf_message_bus/mock_message_bus.rb', line 40 def unsubscribe(subscription_id) @subscriptions.delete(subscription_id) @requests.delete(subscription_id) end |