Methods
S
T
Constants
WAIT_WHEN_EXPECTING_EVENT = 3
 
WAIT_WHEN_NOT_EXPECTING_EVENT = 0.2
 
Instance Public methods
setup()
# File actioncable/test/subscription_adapter/common.rb, line 11
def setup
  server = ActionCable::Server::Base.new
  server.config.cable = cable_config.with_indifferent_access
  server.config.use_faye = ENV['FAYE'].present?

  adapter_klass = server.config.pubsub_adapter

  @rx_adapter = adapter_klass.new(server)
  @tx_adapter = adapter_klass.new(server)
end
subscribe_as_queue(channel, adapter = @rx_adapter)
# File actioncable/test/subscription_adapter/common.rb, line 27
def subscribe_as_queue(channel, adapter = @rx_adapter)
  queue = Queue.new

  callback = -> data { queue << data }
  subscribed = Concurrent::Event.new
  adapter.subscribe(channel, callback, Proc.new { subscribed.set })
  subscribed.wait(WAIT_WHEN_EXPECTING_EVENT)
  assert subscribed.set?

  yield queue

  sleep WAIT_WHEN_NOT_EXPECTING_EVENT
  assert_empty queue
ensure
  adapter.unsubscribe(channel, callback) if subscribed.set?
end
teardown()
# File actioncable/test/subscription_adapter/common.rb, line 22
def teardown
  [@rx_adapter, @tx_adapter].uniq.each(&:shutdown)
end
test_basic_broadcast()
# File actioncable/test/subscription_adapter/common.rb, line 50
def test_basic_broadcast
  subscribe_as_queue('channel') do |queue|
    @tx_adapter.broadcast('channel', 'hello world')

    assert_equal 'hello world', queue.pop
  end
end
test_broadcast_after_unsubscribe()
# File actioncable/test/subscription_adapter/common.rb, line 58
def test_broadcast_after_unsubscribe
  keep_queue = nil
  subscribe_as_queue('channel') do |queue|
    keep_queue = queue

    @tx_adapter.broadcast('channel', 'hello world')

    assert_equal 'hello world', queue.pop
  end

  @tx_adapter.broadcast('channel', 'hello void')

  sleep WAIT_WHEN_NOT_EXPECTING_EVENT
  assert_empty keep_queue
end
test_channel_filtered_broadcast()
# File actioncable/test/subscription_adapter/common.rb, line 109
def test_channel_filtered_broadcast
  subscribe_as_queue('channel') do |queue|
    @tx_adapter.broadcast('other channel', 'one')
    @tx_adapter.broadcast('channel', 'two')

    assert_equal 'two', queue.pop
  end
end
test_identical_subscriptions()
# File actioncable/test/subscription_adapter/common.rb, line 85
def test_identical_subscriptions
  subscribe_as_queue('channel') do |queue|
    subscribe_as_queue('channel') do |queue_2|
      @tx_adapter.broadcast('channel', 'hello')

      assert_equal 'hello', queue_2.pop
    end

    assert_equal 'hello', queue.pop
  end
end
test_multiple_broadcast()
# File actioncable/test/subscription_adapter/common.rb, line 74
def test_multiple_broadcast
  subscribe_as_queue('channel') do |queue|
    @tx_adapter.broadcast('channel', 'bananas')
    @tx_adapter.broadcast('channel', 'apples')

    received = []
    2.times { received << queue.pop }
    assert_equal ['apples', 'bananas'], received.sort
  end
end
test_simultaneous_subscriptions()
# File actioncable/test/subscription_adapter/common.rb, line 97
def test_simultaneous_subscriptions
  subscribe_as_queue('channel') do |queue|
    subscribe_as_queue('other channel') do |queue_2|
      @tx_adapter.broadcast('channel', 'apples')
      @tx_adapter.broadcast('other channel', 'oranges')

      assert_equal 'apples', queue.pop
      assert_equal 'oranges', queue_2.pop
    end
  end
end
test_subscribe_and_unsubscribe()
# File actioncable/test/subscription_adapter/common.rb, line 45
def test_subscribe_and_unsubscribe
  subscribe_as_queue('channel') do |queue|
  end
end