allow user to star/unstar broadcast recordings
This commit is contained in:
@@ -9,16 +9,47 @@ RSpec.describe BroadcastRecordingsController, type: :controller do
|
||||
|
||||
before do
|
||||
sign_in user
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
describe "#update" 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, star: true) }
|
||||
|
||||
it "sets star property to true when recording is starred" do
|
||||
recordings.each do |recording|
|
||||
expect(recording.star).to be_falsey
|
||||
end
|
||||
|
||||
put :update, params: { project_id: project, broadcast_id: broadcast, id: recordings.first.id }, xhr: true
|
||||
|
||||
expect(recordings.first.reload.star).to eq true
|
||||
|
||||
recordings[1..5].each do |recording|
|
||||
expect(recording.reload.star).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
it "sets star property to false when recording is unstarred" do
|
||||
starred_recordings.each do |recording|
|
||||
expect(recording.star).to be_truthy
|
||||
end
|
||||
|
||||
put :update, params: { project_id: project, broadcast_id: broadcast, id: starred_recordings.first.id }, xhr: true
|
||||
|
||||
expect(starred_recordings.first.reload.star).to eq false
|
||||
|
||||
starred_recordings[1..5].each do |recording|
|
||||
expect(recording.reload.star).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#destroy" do
|
||||
let(:broadcast) { create(:broadcast, project: project, name: "New Broadcast") }
|
||||
let(:recording) { create(:broadcast_recording, broadcast: broadcast) }
|
||||
|
||||
before do
|
||||
stub_mux_live_stream
|
||||
end
|
||||
|
||||
it "hides the broadcast recording" do
|
||||
expect(recording.hidden).to be false
|
||||
|
||||
|
||||
@@ -5,5 +5,9 @@ FactoryBot.define do
|
||||
asset_uid "asset_uid"
|
||||
asset_playback_uid "asset_playback_uid"
|
||||
hidden { false }
|
||||
|
||||
trait :with_random_asset_uid do
|
||||
sequence(:asset_uid, 'a')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -223,6 +223,42 @@ feature 'User managing broadcasts' do
|
||||
expect(page).to have_content("Recording of the live stream will appear here")
|
||||
end
|
||||
|
||||
scenario 'project manager can star broadcast recordings', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast, asset_uid: "another_asset_uid")
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
click_on 'Previous Sessions'
|
||||
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).to have_css('i.fa-star-o')
|
||||
expect(page).not_to have_css('i.fa-star')
|
||||
|
||||
find('i.fa-star-o').find(:xpath, '..').click
|
||||
|
||||
expect(page).not_to have_css('i.fa-star-o')
|
||||
expect(page).to have_css('i.fa-star')
|
||||
end
|
||||
|
||||
scenario 'project manager can unstar broadcast recordings', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast, asset_uid: "another_asset_uid", star: true)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
click_on 'Previous Sessions'
|
||||
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).to have_css('i.fa-star')
|
||||
expect(page).not_to have_css('i.fa-star-o')
|
||||
|
||||
find('i.fa-star').find(:xpath, '..').click
|
||||
|
||||
expect(page).not_to have_css('i.fa-star')
|
||||
expect(page).to have_css('i.fa-star-o')
|
||||
end
|
||||
|
||||
context 'When the user is associate' do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
@@ -251,6 +287,19 @@ feature 'User managing broadcasts' do
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).not_to have_content('Hide')
|
||||
end
|
||||
|
||||
scenario 'associate does not see broadcast recordings star', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast, asset_uid: "another_asset_uid", star: true)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
click_on 'Previous Sessions'
|
||||
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).not_to have_css('i.fa-star')
|
||||
expect(page).not_to have_css('i.fa-star-o')
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is account manager' do
|
||||
@@ -295,6 +344,42 @@ feature 'User managing broadcasts' do
|
||||
expect(page).not_to have_content(recording.download_file_name)
|
||||
expect(page).to have_content("Recording of the live stream will appear here")
|
||||
end
|
||||
|
||||
scenario 'account manager can star broadcast recordings', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast, asset_uid: "another_asset_uid")
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
click_on 'Previous Sessions'
|
||||
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).to have_css('i.fa-star-o')
|
||||
expect(page).not_to have_css('i.fa-star')
|
||||
|
||||
find('i.fa-star-o').find(:xpath, '..').click
|
||||
|
||||
expect(page).not_to have_css('i.fa-star-o')
|
||||
expect(page).to have_css('i.fa-star')
|
||||
end
|
||||
|
||||
scenario 'account manager can unstar broadcast recordings', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast, asset_uid: "another_asset_uid", star: true)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
click_on 'Previous Sessions'
|
||||
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
expect(page).to have_css('i.fa-star')
|
||||
expect(page).not_to have_css('i.fa-star-o')
|
||||
|
||||
find('i.fa-star').find(:xpath, '..').click
|
||||
|
||||
expect(page).not_to have_css('i.fa-star')
|
||||
expect(page).to have_css('i.fa-star-o')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user