public void TestInitialize()
        {
            var participants = BuildParticipants(1);

            request = new AddParticipantsToHearingRequest {
                Participants = participants
            };
        }
        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);
        }
        public static AddParticipantsToHearingRequest BuildRequest()
        {
            var participants = Builder <ParticipantRequest> .CreateListOfSize(1).All()
                               .With(x => x.ContactEmail = $"Automation_{Faker.Internet.Email()}")
                               .With(x => x.Username     = $"Automation_{Faker.Internet.Email()}")
                               .Build().ToList();

            participants[0].CaseRoleName    = "Claimant";
            participants[0].HearingRoleName = "Claimant LIP";
            participants[0].FirstName       = "Automation_Added Participant";
            var request = new AddParticipantsToHearingRequest {
                Participants = participants
            };

            return(request);
        }
Beispiel #4
0
        public static AddParticipantsToHearingRequest BuildRequest()
        {
            var participants = Builder <ParticipantRequest> .CreateListOfSize(1).All()
                               .With(x => x.ContactEmail = $"Automation_{Faker.RandomNumber.Next()}@hmcts.net")
                               .With(x => x.Username     = $"Automation_{Faker.RandomNumber.Next()}@hmcts.net")
                               .Build().ToList();

            participants[0].CaseRoleName    = "Applicant";
            participants[0].HearingRoleName = "Litigant in person";
            participants[0].FirstName       = "Automation_Added Participant";
            var request = new AddParticipantsToHearingRequest {
                Participants = participants
            };

            return(request);
        }
        public async Task Should_add_given_participants_to_hearing_and_not_PublishParticipantsAddedEvent_if_no_matching_participant_with_username()
        {
            var hearing      = GetVideoHearing(true);
            var participants = BuildParticipants(3);

            request = new AddParticipantsToHearingRequest {
                Participants = participants
            };
            QueryHandler.Setup(q => q.Handle <GetHearingByIdQuery, VideoHearing>(It.IsAny <GetHearingByIdQuery>())).ReturnsAsync(hearing);

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

            response.Should().NotBeNull();
            QueryHandler.Verify(q => q.Handle <GetHearingByIdQuery, VideoHearing>(It.IsAny <GetHearingByIdQuery>()), Times.Exactly(2));
            QueryHandler.Verify(q => q.Handle <GetCaseTypeQuery, CaseType>(It.IsAny <GetCaseTypeQuery>()), Times.Once);
            CommandHandler.Verify(c => c.Handle(It.IsAny <AddParticipantsToVideoHearingCommand>()), Times.Once);
            EventPublisher.Verify(e => e.PublishAsync(It.IsAny <ParticipantsAddedIntegrationEvent>()), Times.Never);
        }
Beispiel #6
0
        public async Task <IActionResult> AddParticipantsToHearing(Guid hearingId,
                                                                   [FromBody] AddParticipantsToHearingRequest request)
        {
            if (hearingId == Guid.Empty)
            {
                ModelState.AddModelError(nameof(hearingId), $"Please provide a valid {nameof(hearingId)}");
                return(BadRequest(ModelState));
            }

            var result = new AddParticipantsToHearingRequestValidation().Validate(request);

            if (!result.IsValid)
            {
                ModelState.AddFluentValidationErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            var query        = new GetHearingByIdQuery(hearingId);
            var videoHearing = await _queryHandler.Handle <GetHearingByIdQuery, VideoHearing>(query);

            if (videoHearing == null)
            {
                return(NotFound());
            }

            var caseTypequery = new GetCaseTypeQuery(videoHearing.CaseType.Name);
            var caseType      = await _queryHandler.Handle <GetCaseTypeQuery, CaseType>(caseTypequery);

            var individualRoles = caseType.CaseRoles.SelectMany(x => x.HearingRoles).Where(x => x.UserRole.IsIndividual).Select(x => x.Name).ToList();

            var addressValidationResult = AddressValidationHelper.ValidateAddress(individualRoles, request.Participants);

            if (!addressValidationResult.IsValid)
            {
                ModelState.AddFluentValidationErrors(addressValidationResult.Errors);
                return(BadRequest(ModelState));
            }

            var representativeRoles = caseType.CaseRoles.SelectMany(x => x.HearingRoles).Where(x => x.UserRole.IsRepresentative).Select(x => x.Name).ToList();
            var reprensentatives    = request.Participants.Where(x => representativeRoles.Contains(x.HearingRoleName)).ToList();

            var representativeValidationResult = RepresentativeValidationHelper.ValidateRepresentativeInfo(reprensentatives);

            if (!representativeValidationResult.IsValid)
            {
                ModelState.AddFluentValidationErrors(representativeValidationResult.Errors);
                return(BadRequest(ModelState));
            }


            var mapper       = new ParticipantRequestToNewParticipantMapper();
            var participants = request.Participants
                               .Select(x => mapper.MapRequestToNewParticipant(x, videoHearing.CaseType)).ToList();
            var command = new AddParticipantsToVideoHearingCommand(hearingId, participants);

            try
            {
                await _commandHandler.Handle(command);
            }
            catch (DomainRuleException e)
            {
                ModelState.AddDomainRuleErrors(e.ValidationFailures);
                return(BadRequest(ModelState));
            }

            var hearing = await _queryHandler.Handle <GetHearingByIdQuery, VideoHearing>(query);

            // ONLY publish this event when Hearing is set for ready for video
            if (hearing.Status == Domain.Enumerations.BookingStatus.Created)
            {
                await PublishParticipantsAddedEvent(participants, hearing);
            }

            return(NoContent());
        }
Beispiel #7
0
 public static void ParticipantDetails(ParticipantDetailsResponse participant, AddParticipantsToHearingRequest request)
 {
     participant.Should().BeEquivalentTo(request.Participants.First(),
                                         options => options.ExcludingMissingMembers().Excluding(x => x.Representee));
 }