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));
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
 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);
        }
Exemplo n.º 6
0
        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);
        }