public async Task CreateEmptyReview_CheckAutoPass_AppliesPassStatusToModerationWhereApplicable(
            string assessor1ReviewStatus, string assessor1ReviewComments,
            string assessor2ReviewStatus, string assessor2ReviewComments, string moderatorReviewStatus)
        {
            var blindAssessmentOutcome = new BlindAssessmentOutcome
            {
                SequenceNumber         = RoatpWorkflowSequenceIds.DeliveringApprenticeshipTraining,
                SectionNumber          = RoatpWorkflowSectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees,
                PageId                 = _firstPageId,
                Assessor1ReviewStatus  = assessor1ReviewStatus,
                Assessor1ReviewComment = assessor1ReviewComments,
                Assessor2ReviewStatus  = assessor2ReviewStatus,
                Assessor2ReviewComment = assessor2ReviewComments
            };

            _mediator.Setup(x => x.Send(It.IsAny <GetBlindAssessmentOutcomeRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(new BlindAssessmentOutcome());

            _mediator.Setup(x => x.Send(It.IsAny <GetAllBlindAssessmentOutcomesRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(new List <BlindAssessmentOutcome>()
            {
                blindAssessmentOutcome
            });

            await _reviewCreationService.CreateEmptyReview(_applicationId, _userId, _userName);

            _mediator.Verify(x =>
                             x.Send(It.Is <CreateEmptyModeratorReviewRequest>(r =>
                                                                              r.PageReviewOutcomes.Any(y =>
                                                                                                       y.SequenceNumber == RoatpWorkflowSequenceIds.DeliveringApprenticeshipTraining &&
                                                                                                       y.SectionNumber == RoatpWorkflowSectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees &&
                                                                                                       y.PageId == _firstPageId &&
                                                                                                       y.ModeratorReviewStatus == moderatorReviewStatus)),
                                    It.IsAny <CancellationToken>()),
                             Times.Once);
        }
        public async Task GetBlindAssessmentOutcome_returns_expected_BlindAssessmentOutcome()
        {
            var expectedResult = new BlindAssessmentOutcome();

            _mediator.Setup(x => x.Send(It.Is <GetBlindAssessmentOutcomeRequest>(r => r.ApplicationId == _applicationId && r.SequenceNumber == _sequenceNumber && r.SectionNumber == _sectionNumber &&
                                                                                 r.PageId == _pageId), It.IsAny <CancellationToken>())).ReturnsAsync(expectedResult);

            var actualResult = await _controller.GetBlindAssessmentOutcome(_applicationId, _sequenceNumber, _sectionNumber, _pageId);

            _mediator.Verify(x => x.Send(It.Is <GetBlindAssessmentOutcomeRequest>(r => r.ApplicationId == _applicationId && r.SequenceNumber == _sequenceNumber && r.SectionNumber == _sectionNumber &&
                                                                                  r.PageId == _pageId), It.IsAny <CancellationToken>()), Times.Once);
            Assert.AreSame(expectedResult, actualResult);
        }
示例#3
0
        public async Task GetBlindAssessmentOutcomeHandler_returns__BlindAssessmentOutcome()
        {
            var applicationId  = Guid.NewGuid();
            var sequenceNumber = 1;
            var sectionNumber  = 2;
            var pageId         = "30";

            var expectedResult = new BlindAssessmentOutcome
            {
                Assessor1Name          = "Assessor 1",
                Assessor1ReviewStatus  = "Pass",
                Assessor1ReviewComment = "",
                Assessor2Name          = "Assessor 2",
                Assessor2ReviewStatus  = "Failed",
                Assessor2ReviewComment = "Very bad"
            };

            _repository.Setup(x => x.GetBlindAssessmentOutcome(applicationId, sequenceNumber, sectionNumber, pageId)).ReturnsAsync(expectedResult);

            var actualResult = await _handler.Handle(new GetBlindAssessmentOutcomeRequest(applicationId, sequenceNumber, sectionNumber, pageId), new CancellationToken());

            Assert.AreSame(expectedResult, actualResult);
        }
        public void SetUp()
        {
            var logger = new Mock <ILogger <Web.Services.OutcomeSectionReviewOrchestrator> >();

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

            var supplementaryInformationService = new Mock <ISupplementaryInformationService>();

            _orchestrator = new Web.Services.OutcomeSectionReviewOrchestrator(logger.Object, _applyApiClient.Object, _moderationApiClient.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()
            };

            _blindAssessmentOutcome = new BlindAssessmentOutcome
            {
                ApplicationId          = _applicationId,
                SequenceNumber         = _sequenceNumber,
                SectionNumber          = _sectionNumber,
                PageId                 = _pageId,
                Assessor1UserId        = _userId,
                Assessor1Name          = _userName,
                Assessor1ReviewStatus  = AssessorPageReviewStatus.Pass,
                Assessor1ReviewComment = null,
                Assessor2UserId        = $"{_userId}-2",
                Assessor2Name          = $"{_userName}-2",
                Assessor2ReviewStatus  = AssessorPageReviewStatus.Fail,
                Assessor2ReviewComment = "Failed"
            };

            _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);

            _moderationApiClient.Setup(x => x.GetBlindAssessmentOutcome(_applicationId, _sequenceNumber, _sectionNumber, _pageId))
            .ReturnsAsync(_blindAssessmentOutcome);

            _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);
        }