class Basquiat::Adapters::Test

An adapter to be used in testing

Attributes

options[R]

Public Class Methods

clean() click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 12
def clean
  @events&.clear
end
events() click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 8
def events
  @events ||= Hash.new { |hash, key| hash[key] = [] }
end

Public Instance Methods

base_options() click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 19
def base_options
  @event_names = []
  { host: '127.0.0.1', port: 123_456, durable: true }
end
connected?() click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 43
def connected?
  true
end
events(key) click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 28
def events(key)
  self.class.events[key]
end
listen(*) click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 37
def listen(*)
  event = subscribed_event
  msg   = self.class.events[event].shift
  msg ? procs[event].call(BaseMessage.new(msg)) : nil
end
publish(event, message, _single_message = true) click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 24
def publish(event, message, _single_message = true)
  self.class.events[event] << Basquiat::Json.encode(message)
end
subscribe_to(event_name, proc) click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 32
def subscribe_to(event_name, proc)
  @event_names << event_name
  procs[event_name] = proc
end

Private Instance Methods

subscribed_event() click to toggle source
# File lib/basquiat/adapters/test_adapter.rb, line 49
def subscribed_event
  event = @event_names.first
  @event_names.rotate!
  event
end