Skip to Content Skip to Search

TestServer provides test pub/sub and executor implementations

Namespace
Methods
A
N
P
S
T
U

Attributes

[R] config
[R] streams
[R] timers

Class Public methods

new(server)

# File actioncable/lib/action_cable/connection/test_case.rb, line 139
def initialize(server)
  @streams = Hash.new { |h, k| h[k] = [] }
  @config = server.config
  @timers = []
end

Instance Public methods

advance_time(seconds)

# File actioncable/lib/action_cable/connection/test_case.rb, line 158
def advance_time(seconds)
  @timers.each { |timer| timer.advance(seconds) }
end

post(&work)

Inline async calls

# File actioncable/lib/action_cable/connection/test_case.rb, line 152
  def post(&work) = work.call

  def timer(every, &block)
    TestTimer.new(every, &block).tap { |t| @timers << t }
  end

  def advance_time(seconds)
    @timers.each { |timer| timer.advance(seconds) }
  end

  # Pub/sub interface
  # -----------------
  def subscribe(stream, callback, success_callback = nil)
    @streams[stream] << callback
    success_callback&.call
  end

  def unsubscribe(stream, callback)
    @streams[stream].delete(callback)
    @streams.delete(stream) if @streams[stream].empty?
  end
end

subscribe(stream, callback, success_callback = nil)

Pub/sub interface

# File actioncable/lib/action_cable/connection/test_case.rb, line 164
def subscribe(stream, callback, success_callback = nil)
  @streams[stream] << callback
  success_callback&.call
end

timer(every, &block)

# File actioncable/lib/action_cable/connection/test_case.rb, line 154
def timer(every, &block)
  TestTimer.new(every, &block).tap { |t| @timers << t }
end

unsubscribe(stream, callback)

# File actioncable/lib/action_cable/connection/test_case.rb, line 169
def unsubscribe(stream, callback)
  @streams[stream].delete(callback)
  @streams.delete(stream) if @streams[stream].empty?
end