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 137
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 155
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 149
  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 160
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 151
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 165
def unsubscribe(stream, callback)
  @streams[stream].delete(callback)
  @streams.delete(stream) if @streams[stream].empty?
end