From 804e4a9d4728f0057088f5205fd523b4d190e7fe Mon Sep 17 00:00:00 2001 From: Alessandro Rodi Date: Mon, 27 Nov 2023 11:19:39 +0100 Subject: [PATCH] Handle empty streamable array --- app/channels/turbo/streams/stream_name.rb | 3 +++ test/broadcastable/test_helper_test.rb | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/app/channels/turbo/streams/stream_name.rb b/app/channels/turbo/streams/stream_name.rb index 37d80b18..88d965fd 100644 --- a/app/channels/turbo/streams/stream_name.rb +++ b/app/channels/turbo/streams/stream_name.rb @@ -23,6 +23,9 @@ def verified_stream_name_from_params private def stream_name_from(streamables) if streamables.is_a?(Array) + if streamables.compact_blank.empty? + raise ArgumentError, "At least one streamable must be provided. You passed #{streamables.inspect}" + end streamables.map { |streamable| stream_name_from(streamable) }.join(":") else streamables.then { |streamable| streamable.try(:to_gid_param) || streamable.to_param } diff --git a/test/broadcastable/test_helper_test.rb b/test/broadcastable/test_helper_test.rb index aa3f792c..4340d43f 100644 --- a/test/broadcastable/test_helper_test.rb +++ b/test/broadcastable/test_helper_test.rb @@ -104,6 +104,14 @@ class Turbo::Broadcastable::TestHelper::CaptureTurboStreamBroadcastsTest < Activ class Turbo::Broadcastable::TestHelper::AssertTurboStreamBroadcastsTest < ActiveSupport::TestCase include Turbo::Broadcastable::TestHelper + test "#an exception is raised when the argument is nil" do + message = Message.new(id: 1) + + assert_raises ArgumentError do + message.broadcast_replace_to nil + end + end + test "#assert_turbo_stream_broadcasts passes when there is a broadcast" do message = Message.new(id: 1)