public async Task POST_ReviewPageAnswers_When_Valid_submits_ClarificationPageReviewOutcome() { var viewModel = new ClarifierReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, PageId = _pageId, Status = ClarificationPageReviewStatus.Pass, OptionPassText = "test", ClarificationResponse = "All good" }; var command = new SubmitClarificationPageAnswerCommand(viewModel); _sectionReviewOrchestrator.Setup(x => x.GetReviewAnswersViewModel(It.IsAny <GetReviewAnswersRequest>())).ReturnsAsync(viewModel); var validationResponse = new ValidationResponse(); _clarificationPageValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); _clarificationApiClient.Setup(x => x.SubmitClarificationPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.ClarificationResponse, command.Status, command.ReviewComment, It.IsAny <IFormFileCollection>())).ReturnsAsync(true); // act var result = await _controller.ReviewPageAnswers(command) as RedirectToActionResult; // assert Assert.AreEqual("ClarificationOverview", result.ControllerName); Assert.AreEqual("ViewApplication", result.ActionName); _clarificationApiClient.Verify(x => x.SubmitClarificationPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.ClarificationResponse, command.Status, command.ReviewComment, It.IsAny <IFormFileCollection>()), Times.Once); }
public async Task POST_ReviewPageAnswers_When_Invalid_does_not_submit_ClarificationPageReviewOutcome() { var viewModel = new ClarifierReviewAnswersViewModel { ApplicationId = _applicationId, SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, PageId = _pageId, Status = ClarificationPageReviewStatus.Pass, OptionPassText = "test", ClarificationResponse = null }; var command = new SubmitClarificationPageAnswerCommand(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 } }; _clarificationPageValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); // act var result = await _controller.ReviewPageAnswers(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)); _clarificationApiClient.Verify(x => x.SubmitClarificationPageReviewOutcome(command.ApplicationId, command.SequenceNumber, command.SectionNumber, command.PageId, _controller.User.UserId(), _controller.User.UserDisplayName(), command.ClarificationResponse, command.Status, command.ReviewComment, It.IsAny <IFormFileCollection>()), Times.Never); }
public SubmitClarificationPageAnswerCommand(ClarifierReviewAnswersViewModel viewModel) { ApplicationId = viewModel.ApplicationId; PageId = viewModel.PageId; NextPageId = viewModel.NextPageId; SequenceNumber = viewModel.SequenceNumber; SectionNumber = viewModel.SectionNumber; Status = viewModel.Status; ClarificationRequired = viewModel.ClarificationRequired; ClarificationResponse = viewModel.ClarificationResponse; OptionPassText = viewModel.OptionPassText; OptionFailText = viewModel.OptionFailText; OptionInProgressText = viewModel.OptionInProgressText; Heading = viewModel.Heading; }
public async Task <ClarifierReviewAnswersViewModel> GetReviewAnswersViewModel(GetReviewAnswersRequest request) { var application = await _applicationApiClient.GetApplication(request.ApplicationId); var contact = await _applicationApiClient.GetContactForApplication(request.ApplicationId); var clarificationPage = await _clarificationApiClient.GetClarificationPage(request.ApplicationId, request.SequenceNumber, request.SectionNumber, request.PageId); if (application is null || contact is null || clarificationPage is null) { return(null); } var viewModel = new ClarifierReviewAnswersViewModel { 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 = clarificationPage.SequenceNumber, SectionNumber = clarificationPage.SectionNumber, PageId = clarificationPage.PageId, NextPageId = clarificationPage.NextPageId, Caption = clarificationPage.Caption, Heading = clarificationPage.Heading, GuidanceInformation = clarificationPage.GuidanceInformation != null ? new List <string>(clarificationPage.GuidanceInformation) : new List <string>(), Questions = clarificationPage.Questions != null ? new List <Question>(clarificationPage.Questions) : new List <Question>(), Answers = clarificationPage.Answers != null ? new List <Answer>(clarificationPage.Answers) : new List <Answer>(), TabularData = GetTabularDataFromQuestionsAndAnswers(clarificationPage.Questions, clarificationPage.Answers), SupplementaryInformation = await _supplementaryInformationService.GetSupplementaryInformation(application.ApplicationId, clarificationPage.PageId) }; await SetPageReviewOutcome(request, viewModel); return(viewModel); }
private async Task SetPageReviewOutcome(GetReviewAnswersRequest request, ClarifierReviewAnswersViewModel 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 _clarificationApiClient.GetClarificationPageReviewOutcome(request.ApplicationId, request.SequenceNumber, request.SectionNumber, viewModel.PageId, request.UserId); if (pageReviewOutcome != null) { viewModel.Status = pageReviewOutcome.Status; switch (pageReviewOutcome.Status) { case ClarificationPageReviewStatus.Pass: viewModel.OptionPassText = pageReviewOutcome.Comment; break; case ClarificationPageReviewStatus.Fail: viewModel.OptionFailText = pageReviewOutcome.Comment; break; case ClarificationPageReviewStatus.InProgress: viewModel.OptionInProgressText = pageReviewOutcome.Comment; break; default: break; } viewModel.ModerationOutcome = new ModerationOutcome { ApplicationId = pageReviewOutcome.ApplicationId, SequenceNumber = pageReviewOutcome.SequenceNumber, SectionNumber = pageReviewOutcome.SectionNumber, PageId = pageReviewOutcome.PageId, ModeratorUserId = pageReviewOutcome.ModeratorUserId, ModeratorUserName = pageReviewOutcome.ModeratorUserName, ModeratorReviewStatus = pageReviewOutcome.ModeratorReviewStatus, ModeratorReviewComment = pageReviewOutcome.ModeratorReviewComment }; viewModel.ClarificationResponse = pageReviewOutcome.ClarificationResponse; viewModel.ClarificationFile = pageReviewOutcome.ClarificationFile; } }
public async Task ReviewPageAnswers_When_FirstPageInSection() { var viewModel = new ClarifierReviewAnswersViewModel { 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)); }