public void Should_Throw_Conference_Not_Found_Exception_If_Conference_Does_Not_Exist()
        {
            var fakeConferenceId = Guid.NewGuid();
            var query            = new GetAvailableConsultationRoomsByRoomTypeQuery(VirtualCourtRoomType.JudgeJOH, fakeConferenceId);

            _handler.Invoking(x => x.Handle(query)).Should().ThrowAsync <ConferenceNotFoundException>();
        }
Beispiel #2
0
        public async Task <ConsultationRoom> GetAvailableConsultationRoomAsync(Guid conferenceId, VirtualCourtRoomType roomType)
        {
            var query       = new GetAvailableConsultationRoomsByRoomTypeQuery(roomType, conferenceId);
            var listOfRooms = await _queryHandler.Handle <GetAvailableConsultationRoomsByRoomTypeQuery, List <ConsultationRoom> >(query);

            var room = listOfRooms?.FirstOrDefault(x => x.Type.Equals(roomType));

            if (room == null)
            {
                var consultationRoomParams = new CreateConsultationRoomParams
                {
                    Room_label_prefix = roomType.ToString()
                };
                var createConsultationRoomResponse =
                    await CreateConsultationRoomAsync(conferenceId.ToString(),
                                                      consultationRoomParams);

                var createRoomCommand = new CreateConsultationRoomCommand(conferenceId,
                                                                          createConsultationRoomResponse.Room_label,
                                                                          roomType,
                                                                          false);
                await _commandHandler.Handle(createRoomCommand);

                room = new ConsultationRoom(conferenceId, createConsultationRoomResponse.Room_label, roomType, false);
            }

            return(room);
        }
        public async Task Should_returns_room_with_status_live_or_created_for_the_given_room_type()
        {
            var seededConference = await TestDataManager.SeedConference();

            TestContext.WriteLine($"New seeded conference id: {seededConference.Id}");
            _newConferenceId = seededConference.Id;
            var participant = seededConference.Participants.First(x => x.UserRole == UserRole.Judge);

            var listRooms = GetListRoom(_newConferenceId);
            var roomSaved = await TestDataManager.SeedRooms(listRooms);

            await TestDataManager.SeedRoomWithRoomParticipant(roomSaved[0].Id, new RoomParticipant(participant.Id));


            _expectedIds = new List <long> {
                roomSaved[1].Id, roomSaved[2].Id, roomSaved[3].Id
            };
            _notExpectedIds = new List <long> {
                roomSaved[0].Id, roomSaved[4].Id
            };

            await using var db = new VideoApiDbContext(VideoBookingsDbContextOptions);

            var roomToUpdate = await db.Rooms.Include(x => x.RoomParticipants).SingleAsync(x => x.Id == roomSaved[0].Id);

            roomToUpdate.RemoveParticipant(new RoomParticipant(participant.Id));
            await db.SaveChangesAsync();

            var query  = new GetAvailableConsultationRoomsByRoomTypeQuery(VirtualCourtRoomType.JudgeJOH, _newConferenceId);
            var result = await _handler.Handle(query);

            result.Should().NotBeEmpty();
            result.Any(x => x.Id == _expectedIds[0]).Should().Be(true);
            result.Any(x => x.Id == _expectedIds[1]).Should().Be(true);
            result.Any(x => x.Id == _expectedIds[2]).Should().Be(true);
            result.Any(x => x.Id == _notExpectedIds[0]).Should().Be(false);
            result.Any(x => x.Id == _notExpectedIds[1]).Should().Be(false);
        }