Module: DurableStreams::Rails::Testing

Defined in:
lib/durable_streams/rails/testing.rb

Overview

Intercepts stream appends during tests, similar to how ActionCable::TestHelper captures broadcasts. Activated by DurableStreams::Rails::Broadcastable::TestHelper via setup/teardown hooks.

When installed, all calls to DurableStreams.broadcast_event_to and DurableStreams.broadcast_to are recorded in memory instead of being sent to the stream server. Captured messages can be inspected via messages_for.

Class Method Summary collapse

Class Method Details

.install!Object



13
14
15
# File 'lib/durable_streams/rails/testing.rb', line 13

def install!
  self.messages = Hash.new { |h, k| h[k] = [] }
end

.messages_for(stream_name) ⇒ Object



29
30
31
# File 'lib/durable_streams/rails/testing.rb', line 29

def messages_for(stream_name)
  (messages || {})[stream_name] || []
end

.record(stream_name, message) ⇒ Object



25
26
27
# File 'lib/durable_streams/rails/testing.rb', line 25

def record(stream_name, message)
  messages[stream_name] << message if recording?
end

.recording?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/durable_streams/rails/testing.rb', line 21

def recording?
  !messages.nil?
end

.reset!Object



17
18
19
# File 'lib/durable_streams/rails/testing.rb', line 17

def reset!
  self.messages = nil
end