Example #1
0
        FetchAvailableScenesRequest_PresenterInSceneStackButParticipantDoesNotExist_DontReturnPresenterScene()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var presenterScene = new PresenterScene("invalid id");

            // act
            var result = await Mediator.Send(new FetchAvailableScenesRequest(ConferenceId, DefaultRoomId,
                                                                             new[] { presenterScene }));

            // assert
            Assert.DoesNotContain(result, x => Equals(x, presenterScene));
        }
Example #2
0
        public async Task FetchAvailableScenesRequest_PresenterInSceneStack_ReturnPresenterScene()
        {
            // arrange
            await Mediator.Send(new OpenConferenceRequest(ConferenceId));

            await JoinParticipant(TestData.Sven);

            var presenterScene = new PresenterScene(TestData.Sven.Participant.Id);

            // act
            var result = await Mediator.Send(new FetchAvailableScenesRequest(ConferenceId, DefaultRoomId,
                                                                             new[] { presenterScene }));

            // assert
            Assert.Contains(result, x => Equals(x, presenterScene));
        }
        public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context,
                                                                  SceneStackFunc sceneProviderFunc)
        {
            var stack = new List <IScene> {
                scene
            };

            var syncObj = await GetSyncObj(context.ConferenceId, context.RoomId);

            if (syncObj.CurrentSpeakerId != null)
            {
                var rooms = await _mediator.FetchSynchronizedObject <SynchronizedRooms>(context.ConferenceId,
                                                                                        SynchronizedRooms.SyncObjId);

                if (rooms.Participants.TryGetValue(syncObj.CurrentSpeakerId, out var roomId) &&
                    context.RoomId == roomId)
                {
                    var presenterScene = new PresenterScene(syncObj.CurrentSpeakerId);
                    stack.AddRange(await sceneProviderFunc(presenterScene, context));
                }
            }

            return(stack);
        }