From 69d3ab6290978b38f37968dad423723598cd0ce9 Mon Sep 17 00:00:00 2001 From: farhatahmad Date: Thu, 14 Dec 2023 10:09:28 -0500 Subject: [PATCH] Cleanup specs --- app/services/recording_creator.rb | 4 +- .../controllers/recordings_controller_spec.rb | 52 +++++-------------- spec/services/big_blue_button_api_spec.rb | 34 ++++++++++++ spec/services/recording_creator_spec.rb | 19 ++++++- 4 files changed, 67 insertions(+), 42 deletions(-) diff --git a/app/services/recording_creator.rb b/app/services/recording_creator.rb index fbff4df48d..82ebbb3707 100644 --- a/app/services/recording_creator.rb +++ b/app/services/recording_creator.rb @@ -56,14 +56,14 @@ def call return unless @first_creation - BigBlueButtonApi.new(provider: @provider).update_recording_visibility(record_id: @recording.record_id, visibility:) + BigBlueButtonApi.new(provider: @provider).update_recording_visibility(record_id: new_recording.record_id, visibility:) end private # Returns the default recording visibility for a recording that is being created for the first time def default_recording_visibility - SettingGetter.new(setting_name: 'DefaultRecordingVisibility', provider: @provider).call + SettingGetter.new(setting_name: 'DefaultRecordingVisibility', provider: @provider).call || 'Published' end # Returns the visibility of the recording (published, unpublished or protected) diff --git a/spec/controllers/recordings_controller_spec.rb b/spec/controllers/recordings_controller_spec.rb index a2d5edbfe5..75233e42e2 100644 --- a/spec/controllers/recordings_controller_spec.rb +++ b/spec/controllers/recordings_controller_spec.rb @@ -196,47 +196,25 @@ let(:room) { create(:room, user:) } let(:recording) { create(:recording, room:) } - def expect_to_update_recording_props_to(publish:, protect:, list:, visibility:) - expect_any_instance_of(BigBlueButtonApi).to receive(:publish_recordings).with(record_ids: recording.record_id, publish:) - expect_any_instance_of(BigBlueButtonApi).to receive(:update_recordings).with(record_id: recording.record_id, - meta_hash: { - protect:, 'meta_gl-listed': list - }) + it 'updates a recordings visibility' do + expect_any_instance_of(BigBlueButtonApi) + .to receive(:update_recording_visibility) + .with(record_id: recording.record_id, visibility: Recording::VISIBILITIES[:published]) - post :update_visibility, params: { visibility:, id: recording.record_id } + expect do + post :update_visibility, params: { visibility: Recording::VISIBILITIES[:published], id: recording.record_id } + end.to(change { recording.reload.visibility }) - expect(recording.reload.visibility).to eq(visibility) expect(response).to have_http_status(:ok) end - it 'changes the recording visibility to "Published"' do - expect_to_update_recording_props_to(publish: true, protect: false, list: false, visibility: Recording::VISIBILITIES[:published]) - end - - it 'changes the recording visibility to "Unpublished"' do - expect_to_update_recording_props_to(publish: false, protect: false, list: false, visibility: Recording::VISIBILITIES[:unpublished]) - end - - it 'changes the recording visibility to "Protected"' do - expect_to_update_recording_props_to(publish: true, protect: true, list: false, visibility: Recording::VISIBILITIES[:protected]) - end - - it 'changes the recording visibility to "Public"' do - expect_to_update_recording_props_to(publish: true, protect: false, list: true, visibility: Recording::VISIBILITIES[:public]) - end - - it 'changes the recording visibility to "Public/Protected"' do - expect_to_update_recording_props_to(publish: true, protect: true, list: true, visibility: Recording::VISIBILITIES[:public_protected]) - end - context 'AccessToVisibilities permission' do before do RolePermission.find_by(role: user.role, permission: Permission.find_by(name: 'AccessToVisibilities')).update(value: ['Published']) end it 'returns forbidden if the user is not permitted to use that format' do - expect_any_instance_of(BigBlueButtonApi).not_to receive(:publish_recordings) - expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recordings) + expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recording_visibility) expect do post :update_visibility, params: { visibility: 'Unpublished', id: recording.record_id } @@ -248,8 +226,7 @@ def expect_to_update_recording_props_to(publish:, protect:, list:, visibility:) context 'Unknown visibility' do it 'returns :forbidden and does not update the recording' do - expect_any_instance_of(BigBlueButtonApi).not_to receive(:publish_recordings) - expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recordings) + expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recording_visibility) expect do post :update_visibility, params: { visibility: '404', id: recording.record_id } @@ -273,11 +250,9 @@ def expect_to_update_recording_props_to(publish:, protect:, list:, visibility:) it 'allows a shared user to update a recording visibility' do create(:shared_access, user_id: signed_in_user.id, room_id: room.id) - expect_any_instance_of(BigBlueButtonApi).to receive(:publish_recordings).with(record_ids: recording.record_id, publish: false) - expect_any_instance_of(BigBlueButtonApi).to receive(:update_recordings).with(record_id: recording.record_id, - meta_hash: { - protect: false, 'meta_gl-listed': false - }) + expect_any_instance_of(BigBlueButtonApi) + .to receive(:update_recording_visibility) + .with(record_id: recording.record_id, visibility: Recording::VISIBILITIES[:unpublished]) expect do post :update_visibility, params: { visibility: Recording::VISIBILITIES[:unpublished], id: recording.record_id } @@ -287,8 +262,7 @@ def expect_to_update_recording_props_to(publish:, protect:, list:, visibility:) end it 'disallows a none shared user to update a recording visibility' do - expect_any_instance_of(BigBlueButtonApi).not_to receive(:publish_recordings) - expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recordings) + expect_any_instance_of(BigBlueButtonApi).not_to receive(:update_recording_visibility) expect do post :update_visibility, params: { visibility: Recording::VISIBILITIES[:unpublished], id: recording.record_id } diff --git a/spec/services/big_blue_button_api_spec.rb b/spec/services/big_blue_button_api_spec.rb index e124cf181d..483d4f974a 100644 --- a/spec/services/big_blue_button_api_spec.rb +++ b/spec/services/big_blue_button_api_spec.rb @@ -54,4 +54,38 @@ bbb_service.update_recordings(record_id: 'recording_id', meta_hash: { 'meta_recording-name': 'recording_new_name' }) end end + + describe '#update_recording_visibility' do + let(:recording) { create(:recording) } + + def expect_to_update_recording_props_to(publish:, protect:, list:, visibility:) + expect_any_instance_of(BigBlueButtonApi).to receive(:publish_recordings).with(record_ids: recording.record_id, publish:) + expect_any_instance_of(BigBlueButtonApi).to receive(:update_recordings).with(record_id: recording.record_id, + meta_hash: { + protect:, 'meta_gl-listed': list + }) + + bbb_service.update_recording_visibility(record_id: recording.record_id, visibility:) + end + + it 'changes the recording visibility to "Published"' do + expect_to_update_recording_props_to(publish: true, protect: false, list: false, visibility: Recording::VISIBILITIES[:published]) + end + + it 'changes the recording visibility to "Unpublished"' do + expect_to_update_recording_props_to(publish: false, protect: false, list: false, visibility: Recording::VISIBILITIES[:unpublished]) + end + + it 'changes the recording visibility to "Protected"' do + expect_to_update_recording_props_to(publish: true, protect: true, list: false, visibility: Recording::VISIBILITIES[:protected]) + end + + it 'changes the recording visibility to "Public"' do + expect_to_update_recording_props_to(publish: true, protect: false, list: true, visibility: Recording::VISIBILITIES[:public]) + end + + it 'changes the recording visibility to "Public/Protected"' do + expect_to_update_recording_props_to(publish: true, protect: true, list: true, visibility: Recording::VISIBILITIES[:public_protected]) + end + end end diff --git a/spec/services/recording_creator_spec.rb b/spec/services/recording_creator_spec.rb index 1c697d0ea1..a5f61b8053 100644 --- a/spec/services/recording_creator_spec.rb +++ b/spec/services/recording_creator_spec.rb @@ -230,7 +230,7 @@ end end - describe 'Unkown cases' do + describe 'Unknown cases' do let(:bbb_recording) { unkown_visibility_recording } it 'sets a BBB with unkown recording visibility to "Unpublished"' do @@ -239,6 +239,23 @@ expect(room.recordings.first.visibility).to eq(Recording::VISIBILITIES[:unpublished]) end end + + describe 'DefaultRecordingVisibility' do + let(:bbb_recording) { public_recording } + + before do + allow_any_instance_of(BigBlueButtonApi).to receive(:update_recording_visibility) + create(:site_setting, setting: create(:setting, name: 'DefaultRecordingVisibility'), value: 'Unpublished') + end + + it 'sets a BBB public recording visibility to the DefaultRecordingVisibility' do + expect_any_instance_of(BigBlueButtonApi).to receive(:update_recording_visibility) + + described_class.new(recording: bbb_recording, first_creation: true).call + + expect(room.recordings.first.visibility).to eq(Recording::VISIBILITIES[:unpublished]) + end + end end end