Upstream sync
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe BroadcastRecordingStarringsController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:user) { create(:user) }
|
||||
let(:account) { user.primary_account }
|
||||
let(:project) { create(:project, account: user.primary_account) }
|
||||
|
||||
before do
|
||||
sign_in user
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
describe "#create" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "New Broadcast") }
|
||||
let(:recordings) { create_list(:broadcast_recording, 5, :with_random_asset_uid, broadcast: broadcast) }
|
||||
let(:starred_recordings) { create_list(:broadcast_recording, 5, :with_random_asset_uid, broadcast: broadcast, starred: true) }
|
||||
|
||||
it "sets star property to true when recording is starred" do
|
||||
recordings.each do |recording|
|
||||
expect(recording.starred).to be_falsey
|
||||
end
|
||||
|
||||
post :create, params: { project_id: project, broadcast_id: broadcast, broadcast_recording_id: recordings.first.id }, xhr: true
|
||||
|
||||
expect(recordings.first.reload.starred).to eq true
|
||||
|
||||
recordings[1..5].each do |recording|
|
||||
expect(recording.reload.starred).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
it "sets star property to false when recording is unstarred" do
|
||||
starred_recordings.each do |recording|
|
||||
expect(recording.starred).to be_truthy
|
||||
end
|
||||
|
||||
post :create, params: { project_id: project, broadcast_id: broadcast, broadcast_recording_id: starred_recordings.first.id }, xhr: true
|
||||
|
||||
expect(starred_recordings.first.reload.starred).to eq false
|
||||
|
||||
starred_recordings[1..5].each do |recording|
|
||||
expect(recording.reload.starred).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -9,9 +9,10 @@ RSpec.describe BroadcastRecordingsController, type: :controller do
|
||||
|
||||
before do
|
||||
sign_in user
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
describe "#destroy" do
|
||||
describe "#edit" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "New Broadcast") }
|
||||
let(:recording) { create(:broadcast_recording, broadcast: broadcast) }
|
||||
|
||||
@@ -19,6 +20,55 @@ RSpec.describe BroadcastRecordingsController, type: :controller do
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
it "assigns project, broadcast, broadcast recording" do
|
||||
get :edit, params: { project_id: project, broadcast_id: broadcast, id: recording }, xhr: true
|
||||
|
||||
expect(assigns(:project)).to have_attributes({
|
||||
id: project.id,
|
||||
name: project.name,
|
||||
account_id: project.account_id
|
||||
})
|
||||
|
||||
expect(assigns(:broadcast)).to have_attributes({
|
||||
id: broadcast.id,
|
||||
name: broadcast.name,
|
||||
project_id: project.id
|
||||
})
|
||||
|
||||
expect(assigns(:recording)).to have_attributes({
|
||||
id: recording.id,
|
||||
broadcast_id: broadcast.id,
|
||||
file_name: "high.mp4"
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
describe "#update" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "New Broadcast") }
|
||||
let(:recording) { create(:broadcast_recording, broadcast: broadcast) }
|
||||
let(:recordings) { create_list(:broadcast_recording, 5, :with_random_asset_uid, broadcast: broadcast) }
|
||||
let(:starred_recordings) { create_list(:broadcast_recording, 5, :with_random_asset_uid, broadcast: broadcast, starred: true) }
|
||||
|
||||
before do
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
it "updates the recording's name and description" do
|
||||
expect(recording.name).to eq(recording.download_file_name)
|
||||
expect(recording.description).to eq("No description provided for this recording.")
|
||||
|
||||
patch :update, params: { project_id: project, broadcast_id: broadcast, id: recording, broadcast_recording: { name: "Just for fun", description: "I had fun while making this stream." } }, xhr: true
|
||||
recording.reload
|
||||
|
||||
expect(recording.name).to eq("Just for fun")
|
||||
expect(recording.description).to eq("I had fun while making this stream.")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#destroy" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "New Broadcast") }
|
||||
let(:recording) { create(:broadcast_recording, broadcast: broadcast) }
|
||||
|
||||
it "hides the broadcast recording" do
|
||||
expect(recording.hidden).to be false
|
||||
|
||||
|
||||
@@ -150,13 +150,6 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
expect(assigns(:broadcast)).to eq(broadcast)
|
||||
end
|
||||
|
||||
it "renders readonly share url" do
|
||||
get :show, params: { project_id: project.id, id: broadcast.id }
|
||||
|
||||
expect(response.body).to have_button "Copy URL"
|
||||
expect(response.body).to have_xpath "//input[@readonly][@value='#{broadcast_url(broadcast.token)}']"
|
||||
end
|
||||
|
||||
it "displays zoom meeting button" do
|
||||
get :show, params: { project_id: project.id, id: broadcast.id }
|
||||
|
||||
@@ -174,7 +167,7 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
it "renders the view dropdown with just the current broadcast" do
|
||||
get :show, params: { project_id: project, id: broadcast }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item.active", text: "Another Broadcast")
|
||||
end
|
||||
end
|
||||
@@ -185,32 +178,12 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
|
||||
get :show, params: { project_id: project, id: broadcast, multi_view_ids: [broadcast.id, other_broadcast.id] }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item.active", text: "Another Broadcast")
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: "Some Other Broadcast")
|
||||
end
|
||||
end
|
||||
|
||||
context "when there are no recordings for the current broadcast" do
|
||||
it "renders the view dropdown with a message" do
|
||||
get :show, params: { project_id: project, id: broadcast }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item", text: "Recordings will appear here")
|
||||
end
|
||||
end
|
||||
|
||||
context "when there are recordings available" do
|
||||
it "renders the view dropdown with the recordings" do
|
||||
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||
|
||||
get :show, params: { project_id: project, id: broadcast }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: recording.download_file_name)
|
||||
end
|
||||
end
|
||||
|
||||
context "when virtual director video embed is available" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "Another Broadcast",
|
||||
director_mode_video_embed: "<iframe>video player</iframe>") }
|
||||
@@ -218,9 +191,8 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
it "renders the view dropdown with a director mode enable option" do
|
||||
get :show, params: { project_id: project, id: broadcast }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu h5.dropdown-header", text: "Director Mode")
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: "Enable Director Mode")
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".custom-control-label", text: "Director Mode")
|
||||
end
|
||||
|
||||
context "when director mode is enabled" do
|
||||
@@ -233,9 +205,8 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
it "renders the view dropdown with a director mode disable option" do
|
||||
get :show, params: { project_id: project, id: broadcast, director_mode: true }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu h5.dropdown-header", text: "Director Mode")
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: "Disable Director Mode")
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".custom-control-label", text: "Director Mode")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -45,7 +45,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do
|
||||
it "renders the view dropdown with just the current broadcast" do
|
||||
get :show, params: { token: broadcast.token }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item.active", text: "Broadcast")
|
||||
end
|
||||
end
|
||||
@@ -56,7 +56,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do
|
||||
|
||||
get :show, params: { token: broadcast.token, multi_view_tokens: [broadcast.token, other_broadcast.token] }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_content broadcast.name
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item.active", text: "Broadcast")
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: "Some Other Broadcast")
|
||||
end
|
||||
@@ -66,8 +66,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do
|
||||
it "renders the view dropdown with a message" do
|
||||
get :show, params: { token: broadcast.token }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu .dropdown-item", text: "Recordings will appear here")
|
||||
expect(response.body).to have_content broadcast.name
|
||||
end
|
||||
end
|
||||
|
||||
@@ -77,8 +76,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do
|
||||
|
||||
get :show, params: { token: broadcast.token }
|
||||
|
||||
expect(response.body).to have_content "Switch View"
|
||||
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: recording.download_file_name)
|
||||
expect(response.body).to have_content broadcast.name
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user