public async Task ReviewPageAnswers_When_FirstPageInSection() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new AssessorReviewAnswersViewModel { 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, AssessorReviewAnswersViewModel viewModel) { // TODO: To think about... could we move this into Apply Service? It's really part of getting the assessor page back from the service var pageReviewOutcome = await _assessorApiClient.GetAssessorPageReviewOutcome(request.ApplicationId, request.SequenceNumber, request.SectionNumber, viewModel.PageId, request.UserId); if (pageReviewOutcome != null) { viewModel.Status = pageReviewOutcome.Status; switch (pageReviewOutcome.Status) { case AssessorPageReviewStatus.Pass: viewModel.OptionPassText = pageReviewOutcome.Comment; break; case AssessorPageReviewStatus.Fail: viewModel.OptionFailText = pageReviewOutcome.Comment; break; case AssessorPageReviewStatus.InProgress: viewModel.OptionInProgressText = pageReviewOutcome.Comment; break; default: break; } } }
public SubmitAssessorPageAnswerCommand(AssessorReviewAnswersViewModel 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_AssessorPageReviewOutcome() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new AssessorReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = sequenceNumber, SectionNumber = sectionNumber, PageId = pageId, Status = AssessorPageReviewStatus.Pass, OptionPassText = "test" }; var command = new SubmitAssessorPageAnswerCommand(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 } }; _assessorPageValidator.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)); _assessorApiClient.Verify(x => x.SubmitAssessorPageReviewOutcome(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_AssessorPageReviewOutcome() { int sequenceNumber = 4; int sectionNumber = 2; string pageId = "4200"; var viewModel = new AssessorReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = sequenceNumber, SectionNumber = sectionNumber, PageId = pageId, Status = AssessorPageReviewStatus.Pass, OptionPassText = "test" }; var command = new SubmitAssessorPageAnswerCommand(viewModel); _sectionReviewOrchestrator.Setup(x => x.GetReviewAnswersViewModel(It.IsAny <GetReviewAnswersRequest>())).ReturnsAsync(viewModel); var validationResponse = new ValidationResponse(); _assessorPageValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); _assessorApiClient.Setup(x => x.SubmitAssessorPageReviewOutcome(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("AssessorOverview", result.ControllerName); Assert.AreEqual("ViewApplication", result.ActionName); _assessorApiClient.Verify(x => x.SubmitAssessorPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.Status, command.ReviewComment), Times.Once); }
public async Task <AssessorReviewAnswersViewModel> GetReviewAnswersViewModel(GetReviewAnswersRequest request) { var application = await _applicationApiClient.GetApplication(request.ApplicationId); var contact = await _applicationApiClient.GetContactForApplication(request.ApplicationId); var assessorPage = await _assessorApiClient.GetAssessorPage(request.ApplicationId, request.SequenceNumber, request.SectionNumber, request.PageId); if (application is null || contact is null || assessorPage is null) { return(null); } var viewModel = new AssessorReviewAnswersViewModel { 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 = assessorPage.SequenceNumber, SectionNumber = assessorPage.SectionNumber, PageId = assessorPage.PageId, NextPageId = assessorPage.NextPageId, Caption = assessorPage.Caption, Heading = assessorPage.Heading, GuidanceInformation = assessorPage.GuidanceInformation != null ? new List <string>(assessorPage.GuidanceInformation) : new List <string>(), Questions = assessorPage.Questions != null ? new List <Question>(assessorPage.Questions) : new List <Question>(), Answers = assessorPage.Answers != null ? new List <Answer>(assessorPage.Answers) : new List <Answer>(), TabularData = GetTabularDataFromQuestionsAndAnswers(assessorPage.Questions, assessorPage.Answers), SupplementaryInformation = await _supplementaryInformationService.GetSupplementaryInformation(application.ApplicationId, assessorPage.PageId) }; await SetPageReviewOutcome(request, viewModel); return(viewModel); }