Files
once-campfire/test/channels/presence_channel_test.rb
Kevin McConnell df76a227dc Hello world
First open source release of Campfire 🎉
2025-08-21 09:31:59 +01:00

52 lines
1.3 KiB
Ruby

require "test_helper"
class PresenceChannelTest < ActionCable::Channel::TestCase
setup do
stub_connection(current_user: users(:david))
end
test "subscribes" do
room = users(:david).rooms.first
subscribe room_id: room.id
assert subscription.confirmed?
assert_has_stream_for room
end
test "rejects subscription to a room that the user is not a member of" do
subscribe room_id: Rooms::Closed.create!(name: "New Room", creator: users(:david)).id
assert subscription.rejected?
end
test "rejects subscription to non-existent room" do
subscribe room_id: -1
assert subscription.rejected?
end
test "rejects subscription without a room" do
subscribe room_id: -1
assert subscription.rejected?
end
test "subscribing marks the membership as connected" do
membership = users(:david).memberships.first
assert_changes -> { membership.reload.connected? }, from: false, to: true do
subscribe room_id: membership.room_id
end
end
test "unsubscribing marks the membership as disconnected" do
membership = users(:david).memberships.first
subscribe room_id: membership.room_id
assert_changes -> { membership.reload.connected? }, from: true, to: false do
unsubscribe
end
end
end