public async Task Should_confirm_hearing()
        {
            var hearingId = Guid.NewGuid();
            var conferenceDetailsResponse = CreateConferenceDetailsResponse();

            var request = new UpdateBookingRequestBuilder().Build();

            BookingsApiClient
            .Setup(x => x.UpdateBookingStatusAsync(It.IsAny <Guid>(), It.IsAny <UpdateBookingStatusRequest>()))
            .Returns(Task.CompletedTask);

            VideoApiService
            .Setup(x => x.GetConferenceByHearingIdPolling(It.IsAny <Guid>()))
            .ReturnsAsync(conferenceDetailsResponse);

            var response = await Controller.ConfirmHearingById(hearingId, request);

            response.Should().NotBeNull();

            var result = (ObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.Created);

            var conferenceDetails = (ConferenceDetailsResponse)result.Value;

            conferenceDetails.Should().BeEquivalentTo(conferenceDetailsResponse);
        }
        public async Task Should_return_not_found_for_non_existent_hearing_id()
        {
            var request = new UpdateBookingRequestBuilder().Build();

            var uri = ApiUriFactory.HearingEndpoints.ConfirmHearing(Guid.NewGuid());

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.NotFound, false);
        }
Ejemplo n.º 3
0
        public void ConfirmHearing()
        {
            var hearing    = CreateHearing();
            var body       = new UpdateBookingRequestBuilder().Build();
            var uri        = ApiUriFactory.HearingEndpoints.ConfirmHearing(hearing.Id);
            var request    = RequestHandler.Patch(uri, body);
            var response   = SendRequest(request);
            var conference = RequestHelper.Deserialise <ConferenceDetailsResponse>(response.Content);

            response.Should().NotBeNull();
            Context.TestData.Conference = conference;
            Verify.ConferenceDetailsResponse(conference, hearing);
        }
        public async Task Should_confirm_hearing()
        {
            var hearingRequest  = CreateHearingRequest();
            var hearingResponse = await CreateHearing(hearingRequest);

            var request = new UpdateBookingRequestBuilder().Build();

            var uri = ApiUriFactory.HearingEndpoints.ConfirmHearing(hearingResponse.Id);

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.Created, true);
            var response = RequestHelper.Deserialise <ConferenceDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.ConferenceDetailsResponse(response, hearingResponse);
        }
        public async Task Should_throw_not_found_for_non_existent_hearing_id()
        {
            var hearingId = Guid.NewGuid();

            var request = new UpdateBookingRequestBuilder().Build();

            BookingsApiClient
            .Setup(x => x.GetHearingDetailsByIdAsync(It.IsAny <Guid>()))
            .Throws(CreateBookingsApiException("Hearing not found", HttpStatusCode.NotFound));

            var response = await Controller.ConfirmHearingById(hearingId, request);

            response.Should().NotBeNull();

            var result = (ObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
        public async Task Should_throw_not_found_if_conference_not_created()
        {
            var hearingId = Guid.NewGuid();
            var request   = new UpdateBookingRequestBuilder().Build();

            BookingsApiService
            .Setup(x => x.UpdateBookingStatusPolling(It.IsAny <Guid>(), It.IsAny <UpdateBookingStatusRequest>()))
            .Returns(Task.CompletedTask);

            VideoApiService
            .Setup(x => x.GetConferenceByHearingIdPolling(It.IsAny <Guid>()))
            .ThrowsAsync(CreateVideoApiException("Conference not found", HttpStatusCode.NotFound));

            var response = await Controller.ConfirmHearingById(hearingId, request);

            response.Should().NotBeNull();

            var result = (ObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
        public async Task Should_throw_error_if_update_booking_status_failed()
        {
            var hearingId = Guid.NewGuid();
            var conferenceDetailsResponse = CreateConferenceDetailsResponse();

            var request = new UpdateBookingRequestBuilder().Build();

            VideoApiService
            .Setup(x => x.GetConferenceByHearingIdPolling(It.IsAny <Guid>()))
            .ReturnsAsync(conferenceDetailsResponse);

            BookingsApiService
            .Setup(x => x.UpdateBookingStatusPolling(It.IsAny <Guid>(), It.IsAny <UpdateBookingStatusRequest>()))
            .ThrowsAsync(CreateBookingsApiException("Hearing not found", HttpStatusCode.NotFound));

            var response = await Controller.ConfirmHearingById(hearingId, request);

            response.Should().NotBeNull();

            var result = (ObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
        public async Task Should_create_hearing_and_allocate_users()
        {
            var userTypes = new List <UserType>()
            {
                UserType.Judge,
                UserType.VideoHearingsOfficer,
                UserType.CaseAdmin,
                UserType.Individual,
                UserType.Representative,
                UserType.Individual,
                UserType.Representative,
                UserType.Interpreter,
                UserType.Observer,
                UserType.PanelMember,
                UserType.Witness
            };

            var allocateRequest = new AllocateUsersRequestBuilder()
                                  .WithUserTypes(userTypes)
                                  .ForApplication(Application.TestApi)
                                  .Build();

            var allocateUsersUri = ApiUriFactory.AllocationEndpoints.AllocateUsers;

            await SendPatchRequest(allocateUsersUri, RequestHelper.Serialise(allocateRequest));

            VerifyResponse(HttpStatusCode.OK, true);
            var usersDetails = RequestHelper.Deserialise <List <UserDetailsResponse> >(Json);

            usersDetails.Should().NotBeNull();
            Verify.UsersDetailsResponse(usersDetails, userTypes);

            var users = UserDetailsResponseToUserMapper.Map(usersDetails);

            var hearingRequest = new HearingBuilder(users)
                                 .TypeOfTest(TestType.Automated)
                                 .Build();

            var createHearingUri = ApiUriFactory.HearingEndpoints.CreateHearing;

            await SendPostRequest(createHearingUri, RequestHelper.Serialise(hearingRequest));

            VerifyResponse(HttpStatusCode.Created, true);

            var hearing = RequestHelper.Deserialise <HearingDetailsResponse>(Json);

            hearing.Should().NotBeNull();
            HearingsToDelete.Add(hearing);

            var caseAdmin = hearingRequest.Users.First(x => x.UserType == UserType.CaseAdmin);

            var request = new UpdateBookingRequestBuilder().Build();

            var uri = ApiUriFactory.HearingEndpoints.ConfirmHearing(hearing.Id);

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.Created, true);
            var conference = RequestHelper.Deserialise <ConferenceDetailsResponse>(Json);

            conference.Should().NotBeNull();
            Verify.ConferenceDetailsResponse(conference, hearing);

            var unallocateUsersRequest = new UnallocateUsersRequest()
            {
                Usernames = users.Select(user => user.Username).ToList()
            };

            var unallocateUri = ApiUriFactory.AllocationEndpoints.UnallocateUsers;

            await SendPatchRequest(unallocateUri, RequestHelper.Serialise(unallocateUsersRequest));

            VerifyResponse(HttpStatusCode.OK, true);
        }