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 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 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 , but we
need to verify that certain 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 |