public async Task ReviewPageAnswers_When_FirstPageInSection() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new ModeratorReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = sequenceNumber, SectionNumber = sectionNumber, PageId = pageId }; _sectionReviewOrchestrator.Setup(x => x.GetReviewAnswersViewModel(It.IsAny <GetReviewAnswersRequest>())).ReturnsAsync(viewModel); // act var result = await _controller.ReviewPageAnswers(_applicationId, sequenceNumber, sectionNumber, null) as ViewResult; var actualViewModel = result?.Model as ReviewAnswersViewModel; // assert Assert.That(result, Is.Not.Null); Assert.That(actualViewModel, Is.Not.Null); Assert.That(actualViewModel, Is.SameAs(viewModel)); }
private async Task SetPageReviewOutcome(GetReviewAnswersRequest request, ModeratorReviewAnswersViewModel viewModel) { // TODO: To think about... could we move this into Apply Service? It's really part of getting the moderator page back from the service var pageReviewOutcome = await _moderationApiClient.GetModeratorPageReviewOutcome(request.ApplicationId, request.SequenceNumber, request.SectionNumber, viewModel.PageId, request.UserId); if (pageReviewOutcome != null) { viewModel.Status = pageReviewOutcome.Status; switch (pageReviewOutcome.Status) { case ModeratorPageReviewStatus.Pass: viewModel.OptionPassText = pageReviewOutcome.Comment; break; case ModeratorPageReviewStatus.Fail: viewModel.OptionFailText = pageReviewOutcome.Comment; break; case ModeratorPageReviewStatus.InProgress: viewModel.OptionInProgressText = pageReviewOutcome.Comment; break; default: break; } } }
public SubmitModeratorPageAnswerCommand(ModeratorReviewAnswersViewModel viewModel) { ApplicationId = viewModel.ApplicationId; PageId = viewModel.PageId; NextPageId = viewModel.NextPageId; SequenceNumber = viewModel.SequenceNumber; SectionNumber = viewModel.SectionNumber; Status = viewModel.Status; OptionPassText = viewModel.OptionPassText; OptionFailText = viewModel.OptionFailText; OptionInProgressText = viewModel.OptionInProgressText; Heading = viewModel.Heading; }
public async Task POST_ReviewPageAnswers_When_Invalid_does_not_submit_ModeratorPageReviewOutcome() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new ModeratorReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = sequenceNumber, SectionNumber = sectionNumber, PageId = pageId, Status = ModeratorPageReviewStatus.Pass, OptionPassText = "test" }; var command = new SubmitModeratorPageAnswerCommand(viewModel); _sectionReviewOrchestrator.Setup(x => x.GetReviewAnswersViewModel(It.IsAny <GetReviewAnswersRequest>())).ReturnsAsync(viewModel); var error = new ValidationErrorDetail { Field = "Status", ErrorMessage = "Error" }; var validationResponse = new ValidationResponse { Errors = new List <ValidationErrorDetail> { error } }; _moderatorPageValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); // act var result = await _controller.ReviewPageAnswers(_applicationId, sequenceNumber, sectionNumber, pageId, command) as ViewResult; var actualViewModel = result?.Model as ReviewAnswersViewModel; // assert Assert.That(result, Is.Not.Null); Assert.That(actualViewModel, Is.Not.Null); Assert.That(actualViewModel, Is.SameAs(viewModel)); _moderationApiClient.Verify(x => x.SubmitModeratorPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.Status, command.ReviewComment), Times.Never); }
public async Task POST_ReviewPageAnswers_When_Valid_submits_ModeratorPageReviewOutcome() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new ModeratorReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = sequenceNumber, SectionNumber = sectionNumber, PageId = pageId, Status = ModeratorPageReviewStatus.Pass, OptionPassText = "test" }; var command = new SubmitModeratorPageAnswerCommand(viewModel); _sectionReviewOrchestrator.Setup(x => x.GetReviewAnswersViewModel(It.IsAny <GetReviewAnswersRequest>())).ReturnsAsync(viewModel); var validationResponse = new ValidationResponse(); _moderatorPageValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); _moderationApiClient.Setup(x => x.SubmitModeratorPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.Status, command.ReviewComment)).ReturnsAsync(true); // act var result = await _controller.ReviewPageAnswers(_applicationId, sequenceNumber, sectionNumber, pageId, command) as RedirectToActionResult; // assert Assert.AreEqual("ModeratorOverview", result.ControllerName); Assert.AreEqual("ViewApplication", result.ActionName); _moderationApiClient.Verify(x => x.SubmitModeratorPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.Status, command.ReviewComment), Times.Once); }
public async Task <ModeratorReviewAnswersViewModel> GetReviewAnswersViewModel(GetReviewAnswersRequest request) { var application = await _applicationApiClient.GetApplication(request.ApplicationId); var contact = await _applicationApiClient.GetContactForApplication(request.ApplicationId); var moderatorPage = await _moderationApiClient.GetModeratorPage(request.ApplicationId, request.SequenceNumber, request.SectionNumber, request.PageId); if (application is null || contact is null || moderatorPage is null) { return(null); } var viewModel = new ModeratorReviewAnswersViewModel { ApplicationId = application.ApplicationId, Ukprn = application.ApplyData.ApplyDetails.UKPRN, ApplyLegalName = application.ApplyData.ApplyDetails.OrganisationName, ApplicationRoute = application.ApplyData.ApplyDetails.ProviderRouteName, SubmittedDate = application.ApplyData.ApplyDetails.ApplicationSubmittedOn, ApplicantEmailAddress = contact.Email, SequenceNumber = moderatorPage.SequenceNumber, SectionNumber = moderatorPage.SectionNumber, PageId = moderatorPage.PageId, NextPageId = moderatorPage.NextPageId, Caption = moderatorPage.Caption, Heading = moderatorPage.Heading, GuidanceInformation = moderatorPage.GuidanceInformation != null ? new List <string>(moderatorPage.GuidanceInformation) : new List <string>(), Questions = moderatorPage.Questions != null ? new List <Question>(moderatorPage.Questions) : new List <Question>(), Answers = moderatorPage.Answers != null ? new List <Answer>(moderatorPage.Answers) : new List <Answer>(), TabularData = GetTabularDataFromQuestionsAndAnswers(moderatorPage.Questions, moderatorPage.Answers), SupplementaryInformation = await _supplementaryInformationService.GetSupplementaryInformation(application.ApplicationId, moderatorPage.PageId), BlindAssessmentOutcome = await _moderationApiClient.GetBlindAssessmentOutcome(application.ApplicationId, moderatorPage.SequenceNumber, moderatorPage.SectionNumber, moderatorPage.PageId) }; await SetPageReviewOutcome(request, viewModel); return(viewModel); }