public async Task Should_update_participant_in_hearing_and_conference()
        {
            await CreateAndConfirmHearing();

            var participant = Hearing.Participants.First(x => x.HearingRoleName == RoleData.INDV_HEARING_ROLE_NAME && !x.LinkedParticipants.Any());
            var interpreter = Hearing.Participants.FirstOrDefault(x => x.HearingRoleName == RoleData.INTERPRETER_HEARING_ROLE_NAME);

            var request = new UpdateParticipantRequest
            {
                DisplayName        = $"{participant.DisplayName} {HearingData.UPDATED_TEXT}",
                OrganisationName   = $"{participant.Organisation} {HearingData.UPDATED_TEXT}",
                TelephoneNumber    = UserData.UPDATED_TELEPHONE_NUMBER,
                Title              = $"{participant.Title} {HearingData.UPDATED_TEXT}",
                LinkedParticipants = new LinkedParticipantsRequestBuilder(participant.ContactEmail, interpreter.ContactEmail).Build()
            };

            await BookingApiClient.UpdateParticipantDetailsAsync(Hearing.Id, participant.Id, request);

            var conferenceDetails = await PollForConferenceParticipantUpdated(Hearing.Id, participant.Id, HearingData.UPDATED_TEXT);

            var updatedParticipant = conferenceDetails.Participants.First(x => x.Username.Equals(participant.Username));
            var updatedInterpreter = conferenceDetails.Participants.FirstOrDefault(x => x.HearingRole == RoleData.INTERPRETER_HEARING_ROLE_NAME);

            updatedParticipant.DisplayName.Should().Be(request.DisplayName);
            updatedParticipant.ContactTelephone.Should().Be(request.TelephoneNumber);
            updatedParticipant.LinkedParticipants.FirstOrDefault().LinkedId.Should().Be(updatedInterpreter.Id);
        }
Exemple #2
0
        public async Task Should_delete_conference_when_hearing_deleted()
        {
            await CreateAndConfirmHearing();

            await BookingApiClient.RemoveHearingAsync(Hearing.Id);

            var result = await PollForConferenceDeleted(Hearing.Id);

            Hearing.Status = BookingStatus.Cancelled;
            result.Should().BeTrue();
        }
        public async Task Should_remove_participant_from_hearing_and_conference()
        {
            await CreateAndConfirmHearing();

            var participant = Hearing.Participants.First(x => x.UserRoleName.Equals("Individual"));

            await BookingApiClient.RemoveParticipantFromHearingAsync(Hearing.Id, participant.Id);

            var conferenceDetails = await PollForConferenceParticipantPresence(Hearing.Id, participant.Username, false);

            conferenceDetails.Participants.Any(x => x.Username.Equals(participant.Username)).Should().BeFalse();
        }
Exemple #4
0
        private async Task ConfirmMultiDayHearing(HearingDetailsResponse hearing)
        {
            var confirmRequest = new UpdateBookingStatusRequestBuilder()
                                 .UpdatedBy(HearingData.CREATED_BY(Context.Config.UsernameStem))
                                 .Build();

            await BookingApiClient.UpdateBookingStatusAsync(hearing.Id, confirmRequest);

            Conference = await GetConferenceByHearingIdPollingAsync(hearing.Id);

            Verify.ConferenceDetailsResponse(Conference, hearing);
        }
Exemple #5
0
        private async Task <List <HearingDetailsResponse> > PollForAllMultiDayHearings(string username, string expectedCaseName, int expectedNumberOfHearings)
        {
            var policy = Policy
                         .HandleResult <List <HearingDetailsResponse> >(responses => responses.Where(x => x.Cases.Single().Name.StartsWith(expectedCaseName)).ToList().Count != expectedNumberOfHearings)
                         .WaitAndRetryAsync(Retries, retryAttempt =>
                                            TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

            var allHearingsForUser = await policy.ExecuteAsync(async() => await BookingApiClient.GetHearingsByUsernameAsync(username) as List <HearingDetailsResponse>);

            var multiDayHearingsOnly = allHearingsForUser.Where(x => x.Cases.Single().Name.StartsWith(expectedCaseName)).ToList();

            multiDayHearingsOnly.Count.Should().Be(expectedNumberOfHearings);
            return(multiDayHearingsOnly);
        }
        public async Task Should_add_participant_to_hearing_and_conference()
        {
            await CreateAndConfirmHearing();

            var request = new AddParticipantsToHearingRequest()
            {
                Participants = new HearingParticipantsBuilder(Context.Config.UsernameStem, false).AddUser("Individual", 2).Build()
            };
            await BookingApiClient.AddParticipantsToHearingAsync(Hearing.Id, request);

            var conferenceDetails = await PollForConferenceParticipantPresence(Hearing.Id, request.Participants.First().Username, true);

            var participant = conferenceDetails.Participants.First(x => x.Username == request.Participants.First().Username);

            Verify.ParticipantDetails(participant, request);
        }
Exemple #7
0
        public async Task Should_delete_conference_when_hearing_cancelled()
        {
            await CreateAndConfirmHearing();

            const string updatedBy = "*****@*****.**";

            var request = new UpdateBookingStatusRequestBuilder()
                          .WithStatus(UpdateBookingStatus.Cancelled)
                          .UpdatedBy(updatedBy)
                          .Build();
            await BookingApiClient.UpdateBookingStatusAsync(Hearing.Id, request);

            var result = await PollForConferenceDeleted(Hearing.Id);

            Hearing.Status = BookingStatus.Cancelled;
            result.Should().BeTrue();
        }
Exemple #8
0
        public async Task Should_create_cacd_conference_from_hearing()
        {
            await CreateAndConfirmHearing();

            var request = new BookHearingRequestBuilder(Context.Config.UsernameStem).CacdHearing().Build();

            var hearing = await BookingApiClient.BookNewHearingAsync(request);

            var confirmRequest = new UpdateBookingStatusRequestBuilder()
                                 .UpdatedBy(HearingData.CREATED_BY(Context.Config.UsernameStem))
                                 .Build();

            await BookingApiClient.UpdateBookingStatusAsync(hearing.Id, confirmRequest);

            var conferenceDetailsResponse = await GetConferenceByHearingIdPollingAsync(Hearing.Id);

            conferenceDetailsResponse.Should().NotBeNull();
            Verify.ConferenceDetailsResponse(conferenceDetailsResponse, Hearing);
        }
Exemple #9
0
        public async Task Should_create_multi_day_conference_from_hearing()
        {
            var request        = new BookHearingRequestBuilder(Context.Config.UsernameStem).MoveScheduledDateIfWeekend().Build();
            var initialHearing = await BookingApiClient.BookNewHearingAsync(request);

            Hearings.Add(initialHearing);

            const int numberOfDays = 2;
            var       numberOfDaysNotIncludingWeekends = CalculateDaysWithoutWeekend(numberOfDays, initialHearing.ScheduledDateTime);
            var       start = initialHearing.ScheduledDateTime;
            var       end   = initialHearing.ScheduledDateTime.AddDays(numberOfDaysNotIncludingWeekends);
            var       dates = DateListMapper.GetListOfWorkingDates(start, end);

            dates.Count.Should().Be(numberOfDays);
            // Add the initial hearing day
            const int totalNumberOfDays = numberOfDays + 1;

            var multiHearingsRequest = new CloneHearingRequest()
            {
                Dates = dates
            };

            await BookingApiClient.CloneHearingAsync(initialHearing.Id, multiHearingsRequest);

            var anyParticipant = initialHearing.Participants.First();

            var multiDays = await PollForAllMultiDayHearings(anyParticipant.Username, initialHearing.Cases.Single().Name, totalNumberOfDays);

            Hearings.AddRange(multiDays);
            multiDays.Count.Should().Be(totalNumberOfDays);

            foreach (var day in multiDays)
            {
                await ConfirmMultiDayHearing(day);
            }
        }
Exemple #10
0
        public async Task Should_update_conference_when_hearing_updated()
        {
            await CreateAndConfirmHearing();

            var caseRequests = new List <CaseRequest>
            {
                new CaseRequest
                {
                    IsLeadCase = Hearing.Cases.First().IsLeadCase,
                    Name       = $"{Hearing.Cases.First().Name} {HearingData.UPDATED_TEXT}",
                    Number     = $"{Hearing.Cases.First().Number} {HearingData.UPDATED_TEXT}"
                }
            };

            var request = new UpdateHearingRequest
            {
                AudioRecordingRequired = !Hearing.AudioRecordingRequired,
                Cases                    = caseRequests,
                HearingRoomName          = $"{Hearing.HearingRoomName} {HearingData.UPDATED_TEXT}",
                HearingVenueName         = Hearing.HearingVenueName.Equals(HearingData.VENUE_NAME) ? HearingData.VENUE_NAME_ALTERNATIVE : HearingData.VENUE_NAME,
                OtherInformation         = $"{Hearing.OtherInformation} {HearingData.UPDATED_TEXT}",
                QuestionnaireNotRequired = !Hearing.QuestionnaireNotRequired,
                ScheduledDateTime        = Hearing.ScheduledDateTime.AddMinutes(10),
                ScheduledDuration        = Hearing.ScheduledDuration / 2,
                UpdatedBy                = EmailData.NON_EXISTENT_USERNAME
            };

            var hearingDetails = await BookingApiClient.UpdateHearingDetailsAsync(Hearing.Id, request);

            Verify.UpdatedHearing(hearingDetails, request);

            var response = await GetUpdatedConferenceDetailsPollingAsync(Hearing.Id);

            response.Should().NotBeNull();
            Verify.UpdatedConference(response, request);
        }