private async Task <Participant> PrepareTalkingStick(TalkingStickMode mode) { // arrange await Mediator.Send(new OpenConferenceRequest(ConferenceId)); await JoinParticipant(TestData.Sven); var talkingStickScene = new TalkingStickScene(mode); // act await Mediator.Send(new SetSceneRequest(ConferenceId, DefaultRoomId, talkingStickScene)); return(TestData.Sven.Participant); }
public async Task FetchAvailableScenesRequest_TalkingStickInSceneStack_ReturnTalkingStick() { // arrange await Mediator.Send(new OpenConferenceRequest(ConferenceId)); var talkingStickScene = new TalkingStickScene(TalkingStickMode.Queue); // act var result = await Mediator.Send(new FetchAvailableScenesRequest(ConferenceId, DefaultRoomId, new[] { talkingStickScene })); // assert Assert.Contains(result, x => Equals(x, talkingStickScene)); }
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); }
private IReadOnlyDictionary <string, JValue> GetPermissions(Participant participant, PresenterScene?presenterScene, TalkingStickScene scene) { var isPresenter = participant.Id == presenterScene?.PresenterParticipantId; var hasPresenter = presenterScene != null; var permissions = Permissions[scene.Mode]; if (isPresenter) { return(permissions.CurrentSpeaker); } if (hasPresenter) { return(permissions.Others); } return(permissions.OthersNoCurrentSpeaker); }