Пример #1
0
        private void AssertSceneStack(Participant participant, params IScene[] expectedStack)
        {
            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(expectedStack, scenes.SceneStack);
        }
Пример #2
0
        public async Task ConferenceChanged_DefaultSceneSelected_UpdateSynchronizedObject()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(DefaultSceneStack, scenes.SceneStack);

            // act
            var patchResult = await Mediator.Send(new PatchConferenceRequest(ConferenceId,
                                                                             new JsonPatchDocument <ConferenceData>().Add(x => x.Configuration.Scenes.DefaultScene,
                                                                                                                          SceneOptions.BasicSceneType.ActiveSpeaker)));

            Assert.True(patchResult.Success);

            // assert
            scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                          SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(new IScene[] { AutonomousScene.Instance, ActiveSpeakerScene.Instance }, scenes.SceneStack);
        }
Пример #3
0
        public async Task SetSceneRequest_BreakoutRoomsClosed_RevertToOverwrittenScene()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            await Mediator.Send(new OpenBreakoutRoomsRequest(5, null, null, null, ConferenceId));

            await Mediator.Send(new SetSceneRequest(ConferenceId, DefaultRoomId, BreakoutRoomScene.Instance));

            await Mediator.Send(new SetOverwrittenContentSceneRequest(ConferenceId, DefaultRoomId, GridScene.Instance));

            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(new IScene[] { BreakoutRoomScene.Instance, GridScene.Instance }, scenes.SceneStack);

            // act
            await Mediator.Send(new CloseBreakoutRoomsRequest(ConferenceId));

            // assert
            scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                          SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(GridScene.Instance, scenes.SelectedScene);
            Assert.Null(scenes.OverwrittenContent);

            Assert.Equal(new IScene[] { GridScene.Instance }, scenes.SceneStack);
        }
Пример #4
0
        public async Task Queue_ReturnStick_NonEmptyQueue_SetNewPresenter()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Queue);

            await Mediator.Send(new TalkingStickEnqueueRequest(participant, false));

            await JoinParticipant(TestData.Vincent);

            var participant2 = TestData.Vincent.Participant;
            await Mediator.Send(new TalkingStickEnqueueRequest(participant2, false));

            // act
            await Mediator.Send(new TalkingStickReturnRequest(participant));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Equal(participant2.Id, talkingStick.CurrentSpeakerId);
            Assert.Empty(talkingStick.SpeakerQueue);

            AssertSceneStack(participant, SceneStackWithPresenter(TalkingStickMode.Queue, participant2.Id));
        }
Пример #5
0
        private IReadOnlyDictionary <string, JValue> GetParticipantPermissions(Participant participant)
        {
            var permissions =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedParticipantPermissions>(participant,
                                                                                                      SynchronizedParticipantPermissions.SyncObjId(participant.Id));

            return(permissions.Permissions);
        }
Пример #6
0
        public async Task GetPermissions_NooneIsPresenter_HasNotPresenterPermissions()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Race);

            var permissions =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedParticipantPermissions>(participant,
                                                                                                      SynchronizedParticipantPermissions.SyncObjId(participant.Id));

            Assert.Contains(permissions.Permissions,
                            x => Equals(x, DefinedPermissions.Scenes.CanTakeTalkingStick.Configure(true)));
        }
Пример #7
0
        public async Task EnqueueRequest_NoQueueMode_StayInQueue()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Moderated);

            // act
            await Mediator.Send(new TalkingStickEnqueueRequest(participant, false));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Single(talkingStick.SpeakerQueue, participant.Id);
        }
Пример #8
0
        public async Task PassTalkingStickRequest_ParticipantWasInQueue_RemoveFromQueue()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Moderated);

            await Mediator.Send(new TalkingStickEnqueueRequest(participant, false));

            await Mediator.Send(new TalkingStickPassRequest(participant, DefaultRoomId, true));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Empty(talkingStick.SpeakerQueue);
        }
Пример #9
0
        public async Task JoinRoom_DoNothing_HasSceneStack()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            // act
            await JoinParticipant(TestData.Sven);

            // assert
            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(SynchronizedSceneProvider.GetDefaultScene(), scenes.SelectedScene);
            Assert.Equal(DefaultSceneStack, scenes.SceneStack);
            Assert.Null(scenes.OverwrittenContent);
            Assert.NotNull(scenes.AvailableScenes);
        }
Пример #10
0
        public async Task ReturnStick_NoQueueMode_RemovePresenter()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Moderated);

            await Mediator.Send(new TalkingStickPassRequest(participant, DefaultRoomId, true));

            // act
            await Mediator.Send(new TalkingStickReturnRequest(participant));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Null(talkingStick.CurrentSpeakerId);
            AssertSceneStack(participant, new TalkingStickScene(TalkingStickMode.Moderated));
        }
Пример #11
0
        public async Task SetSceneRequest_InvalidScene_UpdateSynchronizedObject()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var scene = new ScreenShareScene("some participant");

            // act
            await Mediator.Send(new SetSceneRequest(ConferenceId, DefaultRoomId, scene));

            // assert
            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(DefaultSceneStack, scenes.SceneStack);
        }
Пример #12
0
        public async Task PassTalkingStickRequest_NoPresenter_MakeParticipantPresenter()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Moderated);

            // act
            await Mediator.Send(new TalkingStickPassRequest(participant, DefaultRoomId, true));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Equal(participant.Id, talkingStick.CurrentSpeakerId);
            Assert.Empty(talkingStick.SpeakerQueue);

            AssertSceneStack(participant, SceneStackWithPresenter(TalkingStickMode.Moderated, participant.Id));
        }
Пример #13
0
        public async Task SetScene_SetToTalkingStick_UpdateSynchronizedObject()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var talkingStickScene = new TalkingStickScene(TalkingStickMode.Queue);

            // act
            await Mediator.Send(new SetSceneRequest(ConferenceId, DefaultRoomId, talkingStickScene));

            // assert
            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(talkingStickScene, scenes.SelectedScene);
            Assert.Equal(new[] { talkingStickScene }, scenes.SceneStack);
        }
Пример #14
0
        public async Task SetOverwrittenContentSceneRequest_ValidScene_UpdateSynchronizedObject()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var scene = ActiveSpeakerScene.Instance;

            // act
            await Mediator.Send(new SetOverwrittenContentSceneRequest(ConferenceId, DefaultRoomId, scene));

            // assert
            var scenes = SynchronizedObjectListener.GetSynchronizedObject <SynchronizedScene>(TestData.Sven.Participant,
                                                                                              SynchronizedScene.SyncObjId(DefaultRoomId));

            Assert.Equal(DefaultSceneStack.Concat(new[] { ActiveSpeakerScene.Instance }), scenes.SceneStack);
            Assert.Equal(scene, scenes.OverwrittenContent);
        }
Пример #15
0
        public async Task Queue_EnqueueRequest_HasPresenter_AddToQueue()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Queue);

            await Mediator.Send(new TalkingStickEnqueueRequest(participant, false));

            await JoinParticipant(TestData.Vincent);

            var participant2 = TestData.Vincent.Participant;

            // act
            await Mediator.Send(new TalkingStickEnqueueRequest(participant2, false));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Equal(participant.Id, talkingStick.CurrentSpeakerId);
            Assert.Single(talkingStick.SpeakerQueue, participant2.Id);
        }
Пример #16
0
        public async Task PassTalkingStickRequestWithFailFlag_HasPresenter_ThrowError()
        {
            // arrange
            var participant = await PrepareTalkingStick(TalkingStickMode.Moderated);

            await Mediator.Send(new TalkingStickPassRequest(participant, DefaultRoomId, true));

            await JoinParticipant(TestData.Vincent);

            var participant2 = TestData.Vincent.Participant;

            // act
            await Assert.ThrowsAsync <IdErrorException>(async() =>
                                                        await Mediator.Send(new TalkingStickPassRequest(participant2, DefaultRoomId, true)));

            // assert
            var talkingStick =
                SynchronizedObjectListener.GetSynchronizedObject <SynchronizedSceneTalkingStick>(participant,
                                                                                                 SynchronizedSceneTalkingStick.SyncObjId(DefaultRoomId));

            Assert.Equal(participant.Id, talkingStick.CurrentSpeakerId);
        }
Пример #17
0
 private SynchronizedParticipants GetSyncObj(Participant participant)
 {
     return(SynchronizedObjectListener.GetSynchronizedObject <SynchronizedParticipants>(participant,
                                                                                        SynchronizedParticipants.SyncObjId));
 }