# frozen_string_literal: true # :markup: markdown module ActionCable module SubscriptionAdapter # ## Test adapter for Action Cable # # The test adapter should be used only in testing. Along with # ActionCable::TestHelper it makes a great tool to test your Rails application. # # To use the test adapter set `adapter` value to `test` in your # `config/cable.yml` file. # # NOTE: `Test` adapter extends the `ActionCable::SubscriptionAdapter::Async` # adapter, so it could be used in system tests too. class Test < Async def broadcast(channel, payload) broadcasts(channel) << payload super end def broadcasts(channel) channels_data[channel] ||= [] end def clear_messages(channel) channels_data[channel] = [] end def clear @channels_data = nil end private def channels_data @channels_data ||= {} end end end end