instance method
assert_broadcast_on
Ruby on Rails 7.2.3
Since v6.0.6Signature
assert_broadcast_on(stream, data, &block)
Asserts that the specified message has been sent to the stream.
def test_assert_transmitted_message ActionCable.server.broadcast 'messages', text: 'hello' assert_broadcast_on('messages', text: 'hello') end
If a block is passed, that block should cause a message with the specified data to be sent.
def test_assert_broadcast_on_again assert_broadcast_on('messages', text: 'hello') do ActionCable.server.broadcast 'messages', text: 'hello' end end
Parameters
-
streamreq -
datareq -
blockblock
Source
# File actioncable/lib/action_cable/test_helper.rb, line 116
def assert_broadcast_on(stream, data, &block)
# Encode to JSON and back–we want to use this value to compare with decoded
# JSON. Comparing JSON strings doesn't work due to the order if the keys.
serialized_msg =
ActiveSupport::JSON.decode(ActiveSupport::JSON.encode(data))
new_messages = broadcasts(stream)
if block_given?
new_messages = new_broadcasts_from(new_messages, stream, "assert_broadcast_on", &block)
end
message = new_messages.find { |msg| ActiveSupport::JSON.decode(msg) == serialized_msg }
error_message = "No messages sent with #{data} to #{stream}"
if new_messages.any?
error_message = new_messages.inject("#{error_message}\nMessage(s) found:\n") do |error_message, new_message|
error_message + "#{ActiveSupport::JSON.decode(new_message)}\n"
end
else
error_message = "#{error_message}\nNo message found for #{stream}"
end
assert message, error_message
end
Defined in actioncable/lib/action_cable/test_helper.rb line 116
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionCable::TestHelper