dawarich/spec/channels/tracks_channel_spec.rb
2025-07-07 21:48:07 +02:00

78 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
RSpec.describe TracksChannel, type: :channel do
let(:user) { create(:user) }
describe '#subscribed' do
it 'successfully subscribes to the channel' do
stub_connection current_user: user
subscribe
expect(subscription).to be_confirmed
expect(subscription).to have_stream_for(user)
end
end
describe 'track broadcasting' do
let!(:track) { create(:track, user: user) }
before do
stub_connection current_user: user
subscribe
end
it 'broadcasts track creation' do
expect {
TracksChannel.broadcast_to(user, {
action: 'created',
track: {
id: track.id,
start_at: track.start_at.iso8601,
end_at: track.end_at.iso8601,
distance: track.distance,
avg_speed: track.avg_speed,
duration: track.duration,
elevation_gain: track.elevation_gain,
elevation_loss: track.elevation_loss,
elevation_max: track.elevation_max,
elevation_min: track.elevation_min,
original_path: track.original_path.to_s
}
})
}.to have_broadcasted_to(user)
end
it 'broadcasts track updates' do
expect {
TracksChannel.broadcast_to(user, {
action: 'updated',
track: {
id: track.id,
start_at: track.start_at.iso8601,
end_at: track.end_at.iso8601,
distance: track.distance,
avg_speed: track.avg_speed,
duration: track.duration,
elevation_gain: track.elevation_gain,
elevation_loss: track.elevation_loss,
elevation_max: track.elevation_max,
elevation_min: track.elevation_min,
original_path: track.original_path.to_s
}
})
}.to have_broadcasted_to(user)
end
it 'broadcasts track destruction' do
expect {
TracksChannel.broadcast_to(user, {
action: 'destroyed',
track_id: track.id
})
}.to have_broadcasted_to(user)
end
end
end