Exemple #1
0
        public async Task ThenCountsShouldBeCorrectWhenEmployerHasASingleCommitmentThats(
            int expectedDraftCount, int expectedReadyForReviewCount, int expectedWithProviderCount, int expectedTransferFundedCohortsCount, int expectedRejectedTransferFundedCohortsCount,
            long?transferSenderId, TransferApprovalStatus transferApprovalStatus,
            AgreementStatus agreementStatus, EditStatus editStatus, LastAction lastAction, int apprenticeshipCount)
        {
            //Arrange
            MockMediator.Setup(x => x.SendAsync(It.IsAny <GetCommitmentsQuery>()))
            .ReturnsAsync(new GetCommitmentsResponse
            {
                Commitments = new List <CommitmentListItem>
                {
                    new CommitmentListItem
                    {
                        TransferSenderId       = transferSenderId,
                        TransferApprovalStatus = transferApprovalStatus,
                        AgreementStatus        = agreementStatus,
                        EditStatus             = editStatus,
                        LastAction             = lastAction,
                        ApprenticeshipCount    = apprenticeshipCount
                    }
                }
            });

            //Act
            var result = await EmployerCommitmentOrchestrator.GetYourCohorts("ABC123", "ABC321");

            //Assert
            Assert.AreEqual(expectedDraftCount, result.Data.DraftCount, "Incorrect DraftCount");
            Assert.AreEqual(expectedReadyForReviewCount, result.Data.ReadyForReviewCount, "Incorrect ReadyForReviewCount");
            Assert.AreEqual(expectedWithProviderCount, result.Data.WithProviderCount, "Incorrect WithProviderCount");
            Assert.AreEqual(expectedTransferFundedCohortsCount, result.Data.TransferFundedCohortsCount, "IncorrectTransferFundedCohortsCount");
            Assert.AreEqual(expectedRejectedTransferFundedCohortsCount, result.Data.RejectedTransferFundedCohortsCount, "IncorrectRejectedTransferFundedCohortsCount");
        }
        public async Task ThenEmailMessageTemplateIdIsSetCorrectly(string expectedTemplateId, TransferApprovalStatus transferApprovalStatus)
        {
            _transferApprovalStatus = transferApprovalStatus;

            await _act();

            Assert.AreEqual(expectedTemplateId, _sentEmailMessage.TemplateId);
        }
Exemple #3
0
        public void ThenTransferSenderApprovedMustNotBeSetWithoutId(TransferApprovalStatus status)
        {
            _apprenticeshipEvent.TransferSenderId       = null;
            _apprenticeshipEvent.TransferApprovalStatus = status;

            var result = _validator.Validate(_command);

            Assert.IsFalse(result.IsValid);
        }
        public async Task ThenCohortTransferRejectionIsIndicated(TransferApprovalStatus status, bool expectRejectionIndicated)
        {
            CommitmentView.TransferSender = new TransferSender
            {
                TransferApprovalStatus = status
            };

            var viewModel = await EmployerCommitmentOrchestrator.GetSkeletonApprenticeshipDetails("HashedAccId", "ExtUserId", "HashedCmtId");

            Assert.AreEqual(expectRejectionIndicated, viewModel.Data.Apprenticeship.IsInTransferRejectedCohort);
        }
        public async Task ThenEmployerIsNotifiedWhenEmailEnabled(TransferApprovalStatus transferApprovalStatus)
        {
            _command.TransferStatus = transferApprovalStatus;

            await _sut.Handle(_command);

            _employerEmailNotificationService.Verify(pens =>
                                                     pens.SendSenderApprovedOrRejectedCommitmentNotification(
                                                         It.IsAny <CommitmentView>(), It.Is <TransferApprovalStatus>(s => s == transferApprovalStatus)),
                                                     Times.Once);
        }
        public void ThenFundingCapWarningShouldBeShownWhenApplicable(TransferApprovalStatus status, int totalCost, int fundingCap, bool expectShowWarning)
        {
            //Arrange
            _transferRequest.TransferCost = totalCost;
            _transferRequest.FundingCap   = fundingCap;
            _transferRequest.Status       = status;

            //Act
            var result = _sut.MapToTransferRequestViewModel(_transferRequest);

            //Assert
            Assert.AreEqual(expectShowWarning, result.ShowFundingCapWarning);
        }
Exemple #7
0
        public async Task TrainingName_IsMapped(TransferApprovalStatus transferApprovalStatus, decimal transferCost, int fundingCap, bool showFundingCapWarning)
        {
            // Arrange
            _getTransferRequestResponse.Status       = transferApprovalStatus;
            _getTransferRequestResponse.TransferCost = transferCost;
            _getTransferRequestResponse.FundingCap   = fundingCap;

            //Act
            var result = await _mapper.Map(_request);

            //Assert
            Assert.AreEqual(showFundingCapWarning, result.ShowFundingCapWarning);
        }
Exemple #8
0
        public void CommitmentIsTransferFundedAndStatusesAreInvalid(TransferApprovalStatus transferApprovalStatus, EditStatus editStatus)
        {
            var commitment = new CommitmentListItem
            {
                AgreementStatus        = AgreementStatus.NotAgreed,
                ApprenticeshipCount    = 1,
                LastAction             = LastAction.None,
                EditStatus             = editStatus,
                TransferSenderId       = 1,
                TransferApprovalStatus = transferApprovalStatus
            };

            Assert.Throws <Exception>(() => commitment.GetStatus());
        }
Exemple #9
0
        public void ThenCohortTransferRejectionIsIndicated(TransferApprovalStatus status, bool expectRejectionIndicated)
        {
            var apprenticeship = new Apprenticeship();
            var commitment     = new CommitmentView
            {
                TransferSender = new TransferSender
                {
                    TransferApprovalStatus = status
                }
            };

            var viewModel = Sut.MapToApprenticeshipViewModel(apprenticeship, commitment);

            Assert.AreEqual(expectRejectionIndicated, viewModel.IsInTransferRejectedCohort);
        }
Exemple #10
0
        public void Arrange()
        {
            _mediator = new Mock <IMediator>();
            _mediator.Setup(m => m.SendAsync(It.IsAny <SendNotificationCommand>()))
            .Callback <IAsyncRequest <Unit> >(c => _sendNotificationCommand = c as SendNotificationCommand)
            .Returns(Task.FromResult(new Unit()));

            _hashingService = new Mock <IHashingService>();

            _employermailNotificationService =
                new EmployerEmailNotificationService(_mediator.Object, Mock.Of <ILog>(), _hashingService.Object);

            _exampleCommitmentView = new CommitmentView
            {
                EmployerLastUpdateInfo = new LastUpdateInfo {
                    EmailAddress = EmployersEmailAddress
                },
                EmployerAccountId = EmployerAccountId,
                LegalEntityName   = EmployerName,
                Reference         = CohortReference,
                TransferSender    = new TransferSender
                {
                    Name = SenderName
                }
            };

            _transferApprovalStatus = TransferApprovalStatus.Approved;

            _tokens = new Dictionary <string, string>
            {
                { "cohort_reference", CohortReference },
                { "employer_name", EmployerName },
                { "sender_name", SenderName },
                { "employer_hashed_account", HashedEmployerAccountId },
            };

            _act = async() =>
                   await _employermailNotificationService.SendSenderApprovedOrRejectedCommitmentNotification(_exampleCommitmentView, _transferApprovalStatus);
        }
        public void Arrange()
        {
            _configuration = new EmployerCommitmentsServiceConfiguration
            {
                CommitmentNotification = new CommitmentNotificationConfiguration
                {
                    SendEmail = true
                }
            };

            _providerEmailService = new Mock <IProviderEmailService>();
            _providerEmailService.Setup(x =>
                                        x.SendEmailToAllProviderRecipients(It.IsAny <long>(), It.IsAny <string>(), It.IsAny <EmailMessage>()))
            .Callback <long, string, EmailMessage>((l, s, m) => _sentEmailMessage = m)
            .Returns(Task.CompletedTask);

            _providerEmailNotificationService =
                new ProviderEmailNotificationService(_providerEmailService.Object, Mock.Of <ILog>(), Mock.Of <IHashingService>(), _configuration);

            _exampleCommitmentView = new CommitmentView
            {
                Reference              = CohortReference,
                ProviderId             = ProviderId,
                ProviderLastUpdateInfo = new LastUpdateInfo {
                    EmailAddress = ProviderLastUpdatedByEmail
                }
            };

            _transferApprovalStatus = TransferApprovalStatus.Approved;

            _tokens = new Dictionary <string, string>
            {
                { "cohort_reference", CohortReference },
                { "ukprn", ProviderId.ToString() }
            };

            _act = async() =>
                   await _providerEmailNotificationService.SendSenderApprovedOrRejectedCommitmentNotification(_exampleCommitmentView, _transferApprovalStatus);
        }
Exemple #12
0
        public void ShouldReturnARequestStatus(TransferApprovalStatus transferApprovalStatus, EditStatus editStatus, RequestStatus requestStatus)
        {
            var commitment = new CommitmentView
            {
                TransferSender = new TransferSender {
                    Id = 1, Name = "Name", TransferApprovalStatus = transferApprovalStatus
                },
                AgreementStatus = AgreementStatus.BothAgreed,
                EditStatus      = editStatus,
                Apprenticeships = new List <Apprenticeship>
                {
                    new Apprenticeship(),
                    new Apprenticeship()
                },
                Messages = new List <MessageView>()
            };

            _mockMediator = GetMediator(commitment);
            SetUpOrchestrator();
            var result = _orchestrator.GetCommitmentDetails(1L, "ABBA213").Result;

            result.Status.Should().Be(requestStatus);
        }
        public void ThenMappingATransferRequestWithAppenticesMapsFieldsCorrectly(TransferApprovalStatus status, string statusDescription)
        {
            _transferRequest.Status = status;
            var result = _sut.MapToTransferRequestViewModel(_transferRequest);

            Assert.AreEqual($"PRI{_transferRequest.SendingEmployerAccountId}", result.HashedTransferSenderAccountId);
            Assert.AreEqual($"PUB{_transferRequest.SendingEmployerAccountId}", result.PublicHashedTransferSenderAccountId);
            Assert.AreEqual($"PRI{_transferRequest.ReceivingEmployerAccountId}", result.HashedTransferReceiverAccountId);
            Assert.AreEqual($"PUB{_transferRequest.ReceivingEmployerAccountId}", result.PublicHashedTransferReceiverAccountId);
            Assert.AreEqual($"PRI{_transferRequest.CommitmentId}", result.HashedCohortReference);
            Assert.AreEqual("LegalEntityName", result.LegalEntityName);
            Assert.AreEqual(10999m, result.TotalCost);
            Assert.AreEqual(2, result.TrainingList.Count);
            Assert.AreEqual("Course1", result.TrainingList[0].CourseTitle);
            Assert.AreEqual(2, result.TrainingList[0].ApprenticeshipCount);
            Assert.AreEqual("Course1 (2 Apprentices)", result.TrainingList[0].SummaryDescription);
            Assert.AreEqual("Course2", result.TrainingList[1].CourseTitle);
            Assert.AreEqual(21, result.TrainingList[1].ApprenticeshipCount);
            Assert.AreEqual("Course2 (21 Apprentices)", result.TrainingList[1].SummaryDescription);
            Assert.AreEqual(statusDescription, result.TransferApprovalStatusDesc);
            Assert.AreEqual("tester", result.TransferApprovalSetBy);
            Assert.AreEqual(new DateTime(2018, 3, 1), result.TransferApprovalSetOn);
            Assert.AreEqual(20000, result.FundingCap);
        }
Exemple #14
0
        public void CommitmentIsTransferFundedAndInValidState(RequestStatus expectedResult, EditStatus editStatus, TransferApprovalStatus transferApprovalStatus)
        {
            var commitment = new CommitmentListItem
            {
                AgreementStatus        = AgreementStatus.NotAgreed,
                ApprenticeshipCount    = 1,
                LastAction             = LastAction.None,
                EditStatus             = editStatus,
                TransferSenderId       = 1,
                TransferApprovalStatus = transferApprovalStatus
            };

            var status = commitment.GetStatus();

            Assert.AreEqual(expectedResult, status);
        }
        public async Task WhenCallingRejectOnTransferRequest_ThenTransferApprovalStatusHandledCorrectly(TransferApprovalStatus status, bool shouldThrowException)
        {
            _fixture
            .WithTransferRequestAndCohortInDatabase()
            .WithTransferApprovalStatus(status);

            if (shouldThrowException)
            {
                Assert.ThrowsAsync <InvalidOperationException>(async() => await _fixture.Act());
            }
            else
            {
                await _fixture.Act();
            }
        }
 public void ThenThrowErrorIfTranferIsAlreadyApprovedOrRejected(TransferApprovalStatus status)
 {
     _repositoryCommitment.TransferSender.TransferApprovalStatus = status;
     Assert.CatchAsync <InvalidRequestException>(async() => await _sut.Handle(_command));
 }
Exemple #17
0
        public void ThenTransferSenderFieldsAreMappedCorrectly(CallerType callerType, bool canEmployerApprove, bool canProviderApprove, TransferApprovalStatus transferStatus)
        {
            var commitment = new Commitment
            {
                TransferSenderId                       = 1,
                TransferSenderName                     = "Transfer Sender Org",
                TransferApprovalStatus                 = transferStatus,
                TransferApprovalActionedOn             = new DateTime(2018, 09, 09),
                TransferApprovalActionedByEmployerName = "Name",
                ProviderCanApproveCommitment           = canProviderApprove,
                EmployerCanApproveCommitment           = canEmployerApprove,
            };

            var result = _mapper.MapFrom(commitment, callerType);

            Assert.AreEqual(1, result.TransferSender.Id);
            Assert.AreEqual("Transfer Sender Org", result.TransferSender.Name);
            Assert.AreEqual(transferStatus, (TransferApprovalStatus)result.TransferSender.TransferApprovalStatus);
            Assert.AreEqual(new DateTime(2018, 09, 09), result.TransferSender.TransferApprovalSetOn);
            Assert.AreEqual("Name", result.TransferSender.TransferApprovalSetBy);
            Assert.AreEqual(true, result.CanBeApproved);
        }
        public async Task ThenIfTheCohortIsFundedByATransferThenDeleteButtonShouldBeHidden(TransferApprovalStatus status)
        {
            CommitmentView.AgreementStatus = AgreementStatus.BothAgreed;
            CommitmentView.EditStatus      = EditStatus.EmployerOnly;
            CommitmentView.TransferSender  = new TransferSender
            {
                Id = 123,
                TransferApprovalStatus = status
            };

            var result = await EmployerCommitmentOrchestrator.GetCommitmentDetails("HashedAccId", "HashedCmtId", "ExtUserId");

            Assert.IsTrue(result.Data.HideDeleteButton);
        }
Exemple #19
0
 public WhenSendingCohortToOtherPartyTestsFixture SetTransferApprovalStatus(TransferApprovalStatus status)
 {
     Cohort.Set(x => x.TransferApprovalStatus, status);
     return(this);
 }
Exemple #20
0
 public WhenApprovingCohortFixture SetTransferApprovalStatus(TransferApprovalStatus status)
 {
     Cohort.Set(x => x.TransferApprovalStatus, status);
     return(this);
 }
 public RejectTransferRequestCommandHandlerTestsFixture WithTransferApprovalStatus(TransferApprovalStatus status)
 {
     _transferRequest.Status = status;
     return(this);
 }