public async Task ReviewPageAnswers_When_Sectors_Page_Invoked()
        {
            var sequenceNumber = SequenceIds.DeliveringApprenticeshipTraining;
            var sectionNumber  = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees;
            var chosenSectors  = new List <ClarificationSector>
            {
                new ClarificationSector {
                    PageId = "1", Title = "Page 1"
                },
                new ClarificationSector {
                    PageId = "2", Title = "Page 2"
                }
            };

            var viewModel = new ApplicationSectorsViewModel
            {
                ApplicationId   = _applicationId,
                SelectedSectors = chosenSectors
            };

            _sectionReviewOrchestrator.Setup(x => x.GetSectorsViewModel(It.IsAny <GetSectorsRequest>())).ReturnsAsync(viewModel);

            var result = await _controller.ReviewPageAnswers(_applicationId, sequenceNumber, sectionNumber, null) as ViewResult;

            var actualViewModel = result?.Model as ApplicationSectorsViewModel;

            Assert.That(result, Is.Not.Null);
            Assert.That(actualViewModel, Is.Not.Null);
            Assert.That(actualViewModel, Is.SameAs(viewModel));
        }
        public async Task <ApplicationSectorsViewModel> GetSectorsViewModel(GetSectorsRequest request)
        {
            var application = await _applicationApiClient.GetApplication(request.ApplicationId);

            var clarificationPage = await _clarificationApiClient.GetClarificationPage(
                request.ApplicationId,
                SequenceIds.DeliveringApprenticeshipTraining,
                SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees,
                RoatpWorkflowPageIds.YourSectorsAndEmployeesStartingPageId);

            if (application is null || clarificationPage is null)
            {
                return(null);
            }

            var selectedSectors = await _clarificationApiClient.GetClarificationSectors(request.ApplicationId, request.UserId);

            var viewModel = new ApplicationSectorsViewModel
            {
                ApplicationId         = application.ApplicationId,
                Ukprn                 = application.ApplyData.ApplyDetails.UKPRN,
                ApplicantEmailAddress = null,
                ApplyLegalName        = application.ApplyData.ApplyDetails.OrganisationName,
                ApplicationRoute      = application.ApplyData.ApplyDetails.ProviderRouteName,
                SubmittedDate         = application.ApplyData.ApplyDetails.ApplicationSubmittedOn,
                Caption               = clarificationPage.Caption,
                Heading               = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployeesHeading,
                SelectedSectors       = selectedSectors
            };

            return(viewModel);
        }
        public async Task GetSectorsViewModel_returns_ViewModel()
        {
            int    sequenceNumber = SequenceIds.DeliveringApprenticeshipTraining;
            int    sectionNumber  = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees;
            string pageId         = RoatpWorkflowPageIds.YourSectorsAndEmployeesStartingPageId;
            var    userId         = _user.UserId();

            _chosenSectors.Add(new AssessorSector {
                PageId = "1", Title = "page 1 title", Status = "Pass"
            });
            _chosenSectors.Add(new AssessorSector {
                PageId = "2", Title = "page 2 title"
            });
            _ukprn             = "1234";
            _organisationName  = "org name";
            _providerRouteName = "Main";

            var application = new Apply
            {
                ApplicationId = _applicationId,
                ApplyData     = new ApplyData
                {
                    ApplyDetails = new ApplyDetails
                    {
                        UKPRN                  = _ukprn,
                        OrganisationName       = _organisationName,
                        ProviderRouteName      = _providerRouteName,
                        ApplicationSubmittedOn = _applicationSubmittedOn
                    }
                }
            };

            var assessorPage = new AssessorPage
            {
                Caption = _assessorPageCaption
            };

            _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application);

            _assessorApiClient.Setup(x => x.GetAssessorPage(_applicationId, sequenceNumber, sectionNumber, pageId))
            .ReturnsAsync(assessorPage);

            _assessorApiClient.Setup(x => x.GetAssessorSectors(_applicationId, userId))
            .ReturnsAsync(_chosenSectors);


            var request         = new GetSectorsRequest(_applicationId, userId);
            var actualViewModel = await _orchestrator.GetSectorsViewModel(request);

            Assert.That(actualViewModel, Is.Not.Null);

            var expectedViewModel = new ApplicationSectorsViewModel
            {
                ApplyLegalName   = _organisationName,
                Ukprn            = _ukprn,
                SelectedSectors  = _chosenSectors,
                ApplicationId    = _applicationId,
                ApplicationRoute = _providerRouteName,
                SubmittedDate    = _applicationSubmittedOn,
                Caption          = _assessorPageCaption,
                Heading          = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployeesHeading
            };

            Assert.AreEqual(JsonConvert.SerializeObject(actualViewModel), JsonConvert.SerializeObject(expectedViewModel));
        }