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 ClarificationSector {
                PageId = "1", Title = "page 1 title", Status = "Pass"
            });
            _chosenSectors.Add(new ClarificationSector {
                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 ClarificationPage
            {
                Caption = _clarificationPageCaption
            };

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

            _clarificationApiClient.Setup(x => x.GetClarificationPage(_applicationId, sequenceNumber, sectionNumber, pageId))
            .ReturnsAsync(assessorPage);

            _clarificationApiClient.Setup(x => x.GetClarificationSectors(_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          = _clarificationPageCaption,
                Heading          = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployeesHeading
            };

            Assert.AreEqual(JsonConvert.SerializeObject(actualViewModel), JsonConvert.SerializeObject(expectedViewModel));
        }
        public void SetUp()
        {
            var logger = new Mock <ILogger <Web.Services.ClarificationSectionReviewOrchestrator> >();

            _applyApiClient         = new Mock <IRoatpApplicationApiClient>();
            _clarificationApiClient = new Mock <IRoatpClarificationApiClient>();

            var supplementaryInformationService = new Mock <ISupplementaryInformationService>();

            _orchestrator = new Web.Services.ClarificationSectionReviewOrchestrator(logger.Object, _applyApiClient.Object, _clarificationApiClient.Object, supplementaryInformationService.Object);

            _userId   = _user.UserId();
            _userName = _user.UserDisplayName();

            _application = new Apply
            {
                ApplicationId = _applicationId,
                ApplyData     = new ApplyData
                {
                    ApplyDetails = new ApplyDetails {
                    }
                },
                Assessor1UserId = _userId
            };

            _contact = new Contact
            {
                Email      = _userId,
                GivenNames = _user.GivenName(),
                FamilyName = _user.Surname()
            };

            _clarificationPage = new ClarificationPage
            {
                ApplicationId  = _applicationId,
                SequenceNumber = _sequenceNumber,
                SectionNumber  = _sectionNumber,
                PageId         = _pageId,
                Questions      = new List <Question>
                {
                    new Question {
                        QuestionId = "Q1"
                    }
                },
                Answers = new List <Answer>
                {
                    new Answer {
                        QuestionId = "Q1", Value = "value"
                    }
                }
            };

            _pageReviewOutcome = new ClarificationPageReviewOutcome
            {
                ApplicationId          = _applicationId,
                SequenceNumber         = _sequenceNumber,
                SectionNumber          = _sectionNumber,
                PageId                 = _pageId,
                UserId                 = _userId,
                UserName               = _userName,
                Status                 = ClarificationPageReviewStatus.Pass,
                ModeratorUserId        = _userId,
                ModeratorUserName      = _userName,
                ModeratorReviewStatus  = ApplyTypes.Moderator.ModeratorPageReviewStatus.Fail,
                ModeratorReviewComment = "Not Good",
                ClarificationResponse  = "Response",
                ClarificationFile      = null
            };

            _applyApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(_application);

            _applyApiClient.Setup(x => x.GetContactForApplication(_applicationId)).ReturnsAsync(_contact);

            _clarificationApiClient.Setup(x => x.GetClarificationPage(_applicationId, _sequenceNumber, _sectionNumber, _pageId))
            .ReturnsAsync(_clarificationPage);

            _clarificationApiClient.Setup(x => x.GetClarificationPageReviewOutcomesForSection(_applicationId, _sequenceNumber, _sectionNumber, _userId))
            .ReturnsAsync(new List <ClarificationPageReviewOutcome> {
                _pageReviewOutcome
            });

            _clarificationApiClient.Setup(x => x.GetClarificationPageReviewOutcome(_applicationId, _sequenceNumber, _sectionNumber, _pageId, _userId))
            .ReturnsAsync(_pageReviewOutcome);
        }