Class: Ears::Testing::MessageCapture
- Inherits:
-
Object
- Object
- Ears::Testing::MessageCapture
- Defined in:
- lib/ears/testing/message_capture.rb
Defined Under Namespace
Classes: Message
Instance Method Summary collapse
- #add_message(exchange_name, data, routing_key, options = {}) ⇒ Object
- #all_messages ⇒ Object
- #clear ⇒ Object
- #count(exchange_name = nil) ⇒ Object
- #empty? ⇒ Boolean
- #find_messages(exchange_name: nil, routing_key: nil, data: nil) ⇒ Object
-
#initialize ⇒ MessageCapture
constructor
A new instance of MessageCapture.
- #messages_for(exchange_name) ⇒ Object
Constructor Details
#initialize ⇒ MessageCapture
Returns a new instance of MessageCapture.
15 16 17 18 |
# File 'lib/ears/testing/message_capture.rb', line 15 def initialize = {} @mutex = Mutex.new end |
Instance Method Details
#add_message(exchange_name, data, routing_key, options = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ears/testing/message_capture.rb', line 20 def (exchange_name, data, routing_key, = {}) @mutex.synchronize do [exchange_name] ||= [] = Message.new( exchange_name: exchange_name, routing_key: routing_key, data: data, options: , timestamp: Time.now, thread_id: Thread.current.object_id.to_s, ) [exchange_name] << (exchange_name) end end |
#all_messages ⇒ Object
46 47 48 |
# File 'lib/ears/testing/message_capture.rb', line 46 def @mutex.synchronize { .values.flatten } end |
#clear ⇒ Object
50 51 52 |
# File 'lib/ears/testing/message_capture.rb', line 50 def clear @mutex.synchronize { .clear } end |
#count(exchange_name = nil) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/ears/testing/message_capture.rb', line 54 def count(exchange_name = nil) @mutex.synchronize do return ([exchange_name] || []).size if exchange_name .values.sum(&:size) end end |
#empty? ⇒ Boolean
62 63 64 65 66 |
# File 'lib/ears/testing/message_capture.rb', line 62 def empty? @mutex.synchronize do .empty? || .values.all?(&:empty?) end end |
#find_messages(exchange_name: nil, routing_key: nil, data: nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/ears/testing/message_capture.rb', line 68 def (exchange_name: nil, routing_key: nil, data: nil) = exchange_name ? (exchange_name) : .select do |msg| next false if routing_key && msg.routing_key != routing_key next false if data && msg.data != data true end end |
#messages_for(exchange_name) ⇒ Object
42 43 44 |
# File 'lib/ears/testing/message_capture.rb', line 42 def (exchange_name) @mutex.synchronize { ([exchange_name] || []).dup } end |