new specs
This commit is contained in:
@@ -101,24 +101,6 @@ RSpec.describe BroadcastsController, type: :controller do
|
|||||||
}.to have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_live_stream, user_agent: "Rails Testing", user_ip: "0.0.0.0")
|
}.to have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_live_stream, user_agent: "Rails Testing", user_ip: "0.0.0.0")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not create new live meeting room if project already has room" do
|
|
||||||
expect(project.live_meeting_url.present?).to eq true
|
|
||||||
expect(Daily).not_to receive(:create_room)
|
|
||||||
|
|
||||||
post :create, params: { project_id: project.id, broadcast: broadcast_params }
|
|
||||||
end
|
|
||||||
|
|
||||||
it "creates new live meeting room if project has no room already created" do
|
|
||||||
project.update(live_meeting_url: nil)
|
|
||||||
|
|
||||||
dummy_room_response = { url: 'dummy_url' }.to_json
|
|
||||||
expect(Daily).to receive(:create_room).and_return(JSON.parse(dummy_room_response))
|
|
||||||
|
|
||||||
post :create, params: { project_id: project.id, broadcast: broadcast_params }
|
|
||||||
|
|
||||||
expect(project.reload.live_meeting_url).to eq 'dummy_url'
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with invalid data" do
|
context "with invalid data" do
|
||||||
it "does not create a new record" do
|
it "does not create a new record" do
|
||||||
expect {
|
expect {
|
||||||
|
|||||||
34
spec/controllers/live_meetings_controller_spec.rb
Normal file
34
spec/controllers/live_meetings_controller_spec.rb
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe LiveMeetingsController, type: :controller do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
let(:account) { user.primary_account }
|
||||||
|
let(:project) { create(:project, account: user.primary_account) }
|
||||||
|
let(:broadcast) { create(:broadcast, name: "Broadcast", project: project) }
|
||||||
|
|
||||||
|
before :each do
|
||||||
|
stub_mux_live_stream
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#show" do
|
||||||
|
before { sign_in user }
|
||||||
|
|
||||||
|
it "does not create new live meeting room if project already has a room" do
|
||||||
|
expect(project.live_meeting_url.present?).to eq true
|
||||||
|
expect(Daily).not_to receive(:create_room)
|
||||||
|
|
||||||
|
get :show, params: { project_id: project.id, broadcast_id: broadcast.id }
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
|
||||||
|
it "creates new live meeting room if project has no room already created" do
|
||||||
|
project.update(live_meeting_url: nil)
|
||||||
|
|
||||||
|
dummy_room_response = { url: 'dummy_url' }.to_json
|
||||||
|
expect(Daily).to receive(:create_room).and_return(JSON.parse(dummy_room_response))
|
||||||
|
|
||||||
|
get :show, params: { project_id: project.id, broadcast_id: broadcast.id }
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
39
spec/controllers/public/live_meetings_controller_spec.rb
Normal file
39
spec/controllers/public/live_meetings_controller_spec.rb
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Public::LiveMeetingsController, type: :controller do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
let(:account) { user.primary_account }
|
||||||
|
let(:project) { create(:project, account: user.primary_account) }
|
||||||
|
let(:broadcast) { create(:broadcast, name: "Broadcast", project: project) }
|
||||||
|
|
||||||
|
before :each do
|
||||||
|
stub_mux_live_stream
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#show" do
|
||||||
|
it "does not create new live meeting room if project already has a room" do
|
||||||
|
expect(project.live_meeting_url.present?).to eq true
|
||||||
|
expect(Daily).not_to receive(:create_room)
|
||||||
|
|
||||||
|
get :show, params: { broadcast_token: broadcast.token }
|
||||||
|
expect(response).to be_successful
|
||||||
|
|
||||||
|
expect(response.body).not_to match meeting_not_ready_message
|
||||||
|
end
|
||||||
|
|
||||||
|
it "creates new live meeting room if project has no room already created" do
|
||||||
|
project.update(live_meeting_url: nil)
|
||||||
|
|
||||||
|
expect(Daily).not_to receive(:create_room)
|
||||||
|
|
||||||
|
get :show, params: { broadcast_token: broadcast.token }
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def meeting_not_ready_message
|
||||||
|
t 'public.live_meetings.show.meeting_not_ready_message'
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -97,6 +97,36 @@ feature 'User managing broadcasts' do
|
|||||||
expect(page).to have_content token_reset_notice
|
expect(page).to have_content token_reset_notice
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario 'Clicking Conference button without previously created live meeting creates new room and opens live meeting' do
|
||||||
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
project.update(live_meeting_url: nil)
|
||||||
|
|
||||||
|
visit project_broadcast_path(project, broadcast)
|
||||||
|
|
||||||
|
dummy_room = { url: 'dummy_room_url' }.to_json
|
||||||
|
allow(Daily).to receive(:create_room).and_return JSON.parse(dummy_room)
|
||||||
|
|
||||||
|
expect {
|
||||||
|
click_link conference_button
|
||||||
|
}.not_to raise_error
|
||||||
|
|
||||||
|
expect(page).not_to have_content meeting_not_ready_message
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Clicking Conference button with previously created live meeting does not create new room and opens live meeting' do
|
||||||
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
|
||||||
|
visit project_broadcast_path(project, broadcast)
|
||||||
|
|
||||||
|
expect(Daily).not_to receive(:create_room)
|
||||||
|
|
||||||
|
expect {
|
||||||
|
click_link conference_button
|
||||||
|
}.not_to raise_error
|
||||||
|
|
||||||
|
expect(page).not_to have_content meeting_not_ready_message
|
||||||
|
end
|
||||||
|
|
||||||
scenario 'form will not submit if user clicks Add files without selected files', js: true do
|
scenario 'form will not submit if user clicks Add files without selected files', js: true do
|
||||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
|
||||||
@@ -254,6 +284,26 @@ feature 'User managing broadcasts' do
|
|||||||
expect(Broadcast.find(broadcast.id).files.count).to eq 2
|
expect(Broadcast.find(broadcast.id).files.count).to eq 2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'When user is not signed in' do
|
||||||
|
before do
|
||||||
|
# sign_out
|
||||||
|
end
|
||||||
|
scenario 'Clicking Conference button without previously created live meeting does not create new meeting and shows error message' do
|
||||||
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
project.update(live_meeting_url: nil)
|
||||||
|
|
||||||
|
visit broadcast_url(broadcast.token)
|
||||||
|
|
||||||
|
expect(Daily).not_to receive(:create_room)
|
||||||
|
|
||||||
|
expect {
|
||||||
|
click_link conference_button
|
||||||
|
}.not_to raise_error
|
||||||
|
|
||||||
|
expect(page).to have_content meeting_not_ready_message
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -305,5 +355,12 @@ feature 'User managing broadcasts' do
|
|||||||
t 'broadcasts.file.actions.delete_file'
|
t 'broadcasts.file.actions.delete_file'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def conference_button
|
||||||
|
'Video Conference'
|
||||||
|
end
|
||||||
|
|
||||||
|
def meeting_not_ready_message
|
||||||
|
t 'public.live_meetings.show.meeting_not_ready_message'
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ RSpec.describe Broadcast, type: :model do
|
|||||||
let(:live_stream_playback_data) { OpenStruct.new(data: OpenStruct.new(id: "playback_id")) }
|
let(:live_stream_playback_data) { OpenStruct.new(data: OpenStruct.new(id: "playback_id")) }
|
||||||
let(:simulcast_data) { OpenStruct.new(data: OpenStruct.new(id: "simulcast_id")) }
|
let(:simulcast_data) { OpenStruct.new(data: OpenStruct.new(id: "simulcast_id")) }
|
||||||
|
|
||||||
it 'triggers create_mux_live_stream and create_live_meeting_if_not_created' do
|
it 'triggers create_mux_live_stream' do
|
||||||
expect(broadcast).to receive(:create_mux_live_stream)
|
expect(broadcast).to receive(:create_mux_live_stream)
|
||||||
expect(broadcast).to receive(:create_live_meeting_if_not_created)
|
|
||||||
|
|
||||||
broadcast.run_callbacks(:create)
|
broadcast.run_callbacks(:create)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user