33 lines
549 B
Ruby
33 lines
549 B
Ruby
|
class MockQueue
|
||
|
attr_reader :messages
|
||
|
|
||
|
def initialize
|
||
|
@messages = []
|
||
|
@subscription_id = 0
|
||
|
@subscriptions = {}
|
||
|
end
|
||
|
|
||
|
def subscribe(&block)
|
||
|
@subscription_id += 1
|
||
|
@subscriptions[@subscription_id] = block
|
||
|
@subscription_id
|
||
|
end
|
||
|
|
||
|
def push(message)
|
||
|
@messages.push(message)
|
||
|
@subscriptions.values.each do |callback|
|
||
|
callback.call(message)
|
||
|
end
|
||
|
message
|
||
|
end
|
||
|
|
||
|
def clear_messages!
|
||
|
@messages = []
|
||
|
end
|
||
|
|
||
|
def unsubscribe(subscription_id)
|
||
|
@subscriptions.delete(subscription_id)
|
||
|
nil
|
||
|
end
|
||
|
end
|