Class: BunnyMock::Queue
- Inherits:
-
Object
- Object
- BunnyMock::Queue
- Defined in:
- lib/support/bunny_mock.rb
Instance Attribute Summary collapse
-
#attrs ⇒ Object
Returns the value of attribute attrs.
-
#delivery_count ⇒ Object
Returns the value of attribute delivery_count.
-
#messages ⇒ Object
Returns the value of attribute messages.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #bind(exchange) ⇒ Object
- #default_consumer ⇒ Object
-
#initialize(name, attrs = {}) ⇒ Queue
constructor
A new instance of Queue.
- #method_missing(method, *args) ⇒ Object
-
#snapshot_messages ⇒ Object
NOTE: This is NOT a method that is supported on real Bunny queues.
-
#subscribe(*args, &block) ⇒ Object
Note that this doesn’t block waiting for messages like the real world.
Constructor Details
#initialize(name, attrs = {}) ⇒ Queue
Returns a new instance of Queue.
32 33 34 35 36 37 |
# File 'lib/support/bunny_mock.rb', line 32 def initialize(name, attrs = {}) self.name = name self.attrs = attrs.dup self. = [] self.delivery_count = 0 end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/support/bunny_mock.rb', line 65 def method_missing(method, *args) method_name = method.to_s is_predicate = false if method_name =~ /^(.*)\?$/ key = $1.to_sym is_predicate = true else key = method.to_sym end if attrs.has_key? key value = attrs[key] is_predicate ? !!value : value else super end end |
Instance Attribute Details
#attrs ⇒ Object
Returns the value of attribute attrs.
31 32 33 |
# File 'lib/support/bunny_mock.rb', line 31 def attrs @attrs end |
#delivery_count ⇒ Object
Returns the value of attribute delivery_count.
31 32 33 |
# File 'lib/support/bunny_mock.rb', line 31 def delivery_count @delivery_count end |
#messages ⇒ Object
Returns the value of attribute messages.
31 32 33 |
# File 'lib/support/bunny_mock.rb', line 31 def @messages end |
#name ⇒ Object
Returns the value of attribute name.
31 32 33 |
# File 'lib/support/bunny_mock.rb', line 31 def name @name end |
Instance Method Details
#bind(exchange) ⇒ Object
39 40 41 |
# File 'lib/support/bunny_mock.rb', line 39 def bind(exchange) exchange.queues << self end |
#default_consumer ⇒ Object
51 52 53 |
# File 'lib/support/bunny_mock.rb', line 51 def default_consumer BunnyMock::Consumer.new(self.delivery_count) end |
#snapshot_messages ⇒ Object
NOTE: This is NOT a method that is supported on real Bunny queues.
This is a custom method to get us a deep copy of
all the messages currently in the queue. This is provided
to aid in testing a system where it is not practical for the
test to subscribe to the queue and read the messages, but we
need to verify that certain messages have been published.
61 62 63 |
# File 'lib/support/bunny_mock.rb', line 61 def Marshal.load(Marshal.dump()) end |
#subscribe(*args, &block) ⇒ Object
Note that this doesn’t block waiting for messages like the real world.
44 45 46 47 48 49 |
# File 'lib/support/bunny_mock.rb', line 44 def subscribe(*args, &block) while = .shift self.delivery_count += 1 yield({:payload => }) end end |