mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
118 lines
3.3 KiB
Ruby
118 lines
3.3 KiB
Ruby
require "test_helper"
|
|
|
|
class UpMatchesBroadcastTest < ActiveSupport::TestCase
|
|
test "tournament broadcaster emits replace action for up matches board" do
|
|
tournament = tournaments(:one)
|
|
stream = stream_name_for(tournament)
|
|
clear_streams(stream)
|
|
|
|
Tournament.broadcast_up_matches_board(tournament.id)
|
|
|
|
assert_operator broadcasts_for(stream).size, :>, 0
|
|
payload = broadcasts_for(stream).last
|
|
assert_up_matches_replace_payload(payload)
|
|
end
|
|
|
|
test "mat queue change broadcasts up matches board update" do
|
|
tournament = tournaments(:one)
|
|
mat = mats(:one)
|
|
match = matches(:tournament_1_bout_2000)
|
|
stream = stream_name_for(tournament)
|
|
clear_streams(stream)
|
|
|
|
mat.update!(queue1: match.id)
|
|
|
|
assert_operator broadcasts_for(stream).size, :>, 0
|
|
assert_up_matches_replace_payload(broadcasts_for(stream).last)
|
|
end
|
|
|
|
test "mat clear_queue broadcasts up matches board update" do
|
|
tournament = tournaments(:one)
|
|
mat = mats(:one)
|
|
match = matches(:tournament_1_bout_2000)
|
|
stream = stream_name_for(tournament)
|
|
|
|
mat.update!(queue1: match.id)
|
|
clear_streams(stream)
|
|
|
|
mat.clear_queue!
|
|
|
|
assert_operator broadcasts_for(stream).size, :>, 0
|
|
assert_up_matches_replace_payload(broadcasts_for(stream).last)
|
|
end
|
|
|
|
test "match mat assignment change broadcasts up matches board update" do
|
|
tournament = tournaments(:one)
|
|
mat = mats(:one)
|
|
match = matches(:tournament_1_bout_2001)
|
|
stream = stream_name_for(tournament)
|
|
clear_streams(stream)
|
|
|
|
match.update!(mat_id: mat.id)
|
|
|
|
assert_operator broadcasts_for(stream).size, :>, 0
|
|
assert_up_matches_replace_payload(broadcasts_for(stream).last)
|
|
end
|
|
|
|
test "match mat unassignment broadcasts up matches board update" do
|
|
tournament = tournaments(:one)
|
|
mat = mats(:one)
|
|
match = matches(:tournament_1_bout_2001)
|
|
stream = stream_name_for(tournament)
|
|
|
|
match.update!(mat_id: mat.id)
|
|
clear_streams(stream)
|
|
|
|
match.update!(mat_id: nil)
|
|
|
|
assert_operator broadcasts_for(stream).size, :>, 0
|
|
assert_up_matches_replace_payload(broadcasts_for(stream).last)
|
|
end
|
|
|
|
test "mat update without queue slot changes does not broadcast up matches board update" do
|
|
tournament = tournaments(:one)
|
|
mat = mats(:one)
|
|
stream = stream_name_for(tournament)
|
|
clear_streams(stream)
|
|
|
|
mat.update!(name: "Mat One Renamed")
|
|
|
|
assert_equal 0, broadcasts_for(stream).size
|
|
end
|
|
|
|
test "match update without mat_id change does not broadcast up matches board update" do
|
|
tournament = tournaments(:one)
|
|
match = matches(:tournament_1_bout_2001)
|
|
stream = stream_name_for(tournament)
|
|
clear_streams(stream)
|
|
|
|
match.update!(w1_stat: "Local stat change")
|
|
|
|
assert_equal 0, broadcasts_for(stream).size
|
|
end
|
|
|
|
private
|
|
|
|
def broadcasts_for(stream)
|
|
ActionCable.server.pubsub.broadcasts(stream)
|
|
end
|
|
|
|
def clear_streams(*streams)
|
|
ActionCable.server.pubsub.clear
|
|
streams.each do |stream|
|
|
broadcasts_for(stream).clear
|
|
end
|
|
end
|
|
|
|
def stream_name_for(streamable)
|
|
Turbo::StreamsChannel.send(:stream_name_from, [streamable])
|
|
end
|
|
|
|
# Broadcast payloads may be JSON-escaped in test adapters, so assert semantic markers.
|
|
def assert_up_matches_replace_payload(payload)
|
|
assert_includes payload, "up_matches_board"
|
|
assert_includes payload, "replace"
|
|
assert_includes payload, "turbo-stream"
|
|
end
|
|
end
|