require 'rails_helper' RSpec.describe BroadcastRecordingsController, 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 "#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) } it "hides the broadcast recording" do expect(recording.hidden).to be false post :destroy, params: { project_id: project, broadcast_id: broadcast, id: recording }, xhr: true expect(recording.reload.hidden).to be true end end end