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); }
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); }
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()); }
public static void ParticipantDetails(ParticipantDetailsResponse participant, AddParticipantsToHearingRequest request) { participant.Should().BeEquivalentTo(request.Participants.First(), options => options.ExcludingMissingMembers().Excluding(x => x.Representee)); }