44 lines
1.6 KiB
Ruby
44 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe ProjectsChannel, type: :channel do
|
|
let(:user) { create(:user) }
|
|
let(:project) { create(:project, account: user.primary_account) }
|
|
|
|
before do
|
|
stub_connection current_user: user
|
|
end
|
|
|
|
it "successfully subscribes to project stream" do
|
|
subscribe id: project.id
|
|
expect(subscription).to be_confirmed
|
|
expect(subscription).to have_stream_for(project)
|
|
end
|
|
|
|
describe ".broadcast_video_analysis_update" do
|
|
it "broadcasts to the project channel" do
|
|
video = create(:video, project: project)
|
|
content = ApplicationController.render partial: "video_analyses/video_status_updated", locals: { video: video }
|
|
|
|
expect {
|
|
ProjectsChannel.broadcast_video_analysis_update(video)
|
|
}.to have_broadcasted_to(project).with(event: "video_status_update", content: content)
|
|
end
|
|
end
|
|
|
|
describe ".conference_recording_ready" do
|
|
it "broadcasts to the project channel" do
|
|
recording_file = Rack::Test::UploadedFile.new(Rails.root.join("spec", "fixtures", "files", "video_file.mp4"), "video/mp4")
|
|
zoom_meeting = create(:zoom_meeting, project: project, recording: recording_file)
|
|
video_url = 'http://url.to.video/video.mp4'
|
|
allow(zoom_meeting.recording).to receive(:service_url).and_return(video_url)
|
|
|
|
expect {
|
|
ProjectsChannel.conference_recording_ready(project, zoom_meeting.recording)
|
|
}.to have_broadcasted_to(project).with { |data|
|
|
expect(data['content']).to include(video_url)
|
|
expect(data['event']).to eq('conference_recording_ready')
|
|
}
|
|
end
|
|
end
|
|
end
|