コード例 #1
0
        public IncentivePhaseSteps(TestContext testContext) : base(testContext)
        {
            _testContext = testContext;
            _fixture     = new Fixture();
            var today = new DateTime(2021, 1, 30);

            _accountModel     = _fixture.Create <Account>();
            _applicationModel = _fixture.Build <IncentiveApplication>()
                                .With(p => p.Status, IncentiveApplicationStatus.InProgress)
                                .With(p => p.AccountId, _accountModel.Id)
                                .With(p => p.AccountLegalEntityId, _accountModel.AccountLegalEntityId)
                                .Create();

            _incentiveApplicationApprenticeshipModel = _fixture.Build <IncentiveApplicationApprenticeship>()
                                                       .With(p => p.IncentiveApplicationId, _applicationModel.Id)
                                                       .With(p => p.EarningsCalculated, false)
                                                       .With(p => p.WithdrawnByCompliance, false)
                                                       .With(p => p.WithdrawnByEmployer, false)
                                                       .With(p => p.DateOfBirth, today.AddYears(-20))
                                                       .With(p => p.Phase, Phase.NotSet)
                                                       .With(p => p.EmploymentStartDate, new DateTime(2021, 04, 01))
                                                       .With(p => p.HasEligibleEmploymentStartDate, true)
                                                       .Create();

            _apprenticeshipsModels = new List <IncentiveApplicationApprenticeship>
            {
                _incentiveApplicationApprenticeshipModel
            };
        }
コード例 #2
0
        public void Arrange()
        {
            _fixture = new Fixture();
            _fixture.Customize(new IncentiveApplicationCustomization());

            _sut = _fixture.Create <IncentiveApplication>();
        }
        public WithdrawalByComplianceSteps(TestContext testContext) : base(testContext)
        {
            _testContext      = testContext;
            _fixture          = new Fixture();
            _connectionString = _testContext.SqlDatabase.DatabaseInfo.ConnectionString;

            _application    = _fixture.Create <IncentiveApplication>();
            _apprenticeship = _fixture
                              .Build <IncentiveApplicationApprenticeship>()
                              .With(a => a.IncentiveApplicationId, _application.Id)
                              .With(a => a.WithdrawnByCompliance, false)
                              .Create();

            _apprenticeship2 = _fixture
                               .Build <IncentiveApplicationApprenticeship>()
                               .With(a => a.IncentiveApplicationId, _application.Id)
                               .With(a => a.ULN, _apprenticeship.ULN)
                               .With(a => a.WithdrawnByCompliance, false)
                               .Create();

            _apprenticeshipIncentive = _fixture
                                       .Build <ApprenticeshipIncentive>()
                                       .With(i => i.IncentiveApplicationApprenticeshipId, _apprenticeship.Id)
                                       .With(i => i.AccountLegalEntityId, _application.AccountLegalEntityId)
                                       .With(i => i.AccountId, _application.AccountId)
                                       .With(i => i.ULN, _apprenticeship.ULN)
                                       .With(i => i.Status, IncentiveStatus.Active)
                                       .Create();

            _pendingPayment = _fixture
                              .Build <PendingPayment>()
                              .With(p => p.ApprenticeshipIncentiveId, _apprenticeshipIncentive.Id)
                              .With(i => i.AccountId, _apprenticeshipIncentive.AccountId)
                              .With(i => i.AccountLegalEntityId, _apprenticeshipIncentive.AccountLegalEntityId)
                              .With(p => p.PaymentMadeDate, (DateTime?)null)
                              .Create();

            _paidPendingPayment = _fixture
                                  .Build <PendingPayment>()
                                  .With(p => p.ApprenticeshipIncentiveId, _apprenticeshipIncentive.Id)
                                  .With(i => i.AccountId, _apprenticeshipIncentive.AccountId)
                                  .With(i => i.AccountLegalEntityId, _apprenticeshipIncentive.AccountLegalEntityId)
                                  .Create();

            _payment = _fixture
                       .Build <Payment>()
                       .With(p => p.ApprenticeshipIncentiveId, _apprenticeshipIncentive.Id)
                       .With(i => i.AccountId, _apprenticeshipIncentive.AccountId)
                       .With(i => i.AccountLegalEntityId, _apprenticeshipIncentive.AccountLegalEntityId)
                       .With(p => p.PendingPaymentId, _paidPendingPayment.Id)
                       .Create();

            _pendingPaymentValidationResult = _fixture
                                              .Build <PendingPaymentValidationResult>()
                                              .With(p => p.PendingPaymentId, _pendingPayment.Id)
                                              .With(p => p.Step, "Invalid")
                                              .With(p => p.PeriodNumber, 1)
                                              .With(p => p.PaymentYear, 2021)
                                              .Create();
        }
        public async Task WhenAnEmployerHasSubmittedAnApplicationAndNotSuppliedBankDetails()
        {
            _applicationCutOffDate = DateTime.Today.AddDays(-10);

            _account           = TestContext.TestData.GetOrCreate <Account>();
            _account.VrfCaseId = null;
            _account.VrfCaseStatusLastUpdatedDateTime = null;
            _account.VrfCaseStatus = null;
            _account.VrfVendorId   = null;

            _application                           = TestContext.TestData.GetOrCreate <IncentiveApplication>();
            _application.AccountId                 = _account.Id;
            _application.AccountLegalEntityId      = _account.AccountLegalEntityId;
            _application.Status                    = Enums.IncentiveApplicationStatus.Submitted;
            _application.DateCreated               = _applicationCutOffDate.AddDays(-1);
            _application.DateSubmitted             = _applicationCutOffDate.AddDays(-1);
            _apprenticeship                        = TestContext.TestData.GetOrCreate <IncentiveApplicationApprenticeship>();
            _apprenticeship.IncentiveApplicationId = _application.Id;

            _apprenticeshipIncentive                      = TestContext.TestData.GetOrCreate <ApprenticeshipIncentive>();
            _apprenticeshipIncentive.AccountId            = _account.Id;
            _apprenticeshipIncentive.AccountLegalEntityId = _account.AccountLegalEntityId;
            _apprenticeshipIncentive.SubmittedDate        = _applicationCutOffDate.AddDays(-1);

            await SetupApprenticeshipIncentive();
        }
        public EligibleApprenticeshipRequestedSteps(TestContext testContext) : base(testContext)
        {
            _uln = Fixture.Create <long>();
            _incentiveApplication    = Fixture.Build <IncentiveApplication>().Without(x => x.Apprenticeships).Create();
            _incentiveApprenticeship =
                Fixture.Build <IncentiveApplicationApprenticeship>()
                .With(x => x.ULN, _uln)
                .With(x => x.IncentiveApplicationId, _incentiveApplication.Id)
                .With(x => x.WithdrawnByCompliance, false)
                .With(x => x.WithdrawnByEmployer, false)
                .Create();

            _incentiveApplication.Apprenticeships.Add(_incentiveApprenticeship);
        }
コード例 #6
0
        public async Task Save(IncentiveApplication aggregate)
        {
            if (aggregate.IsNew)
            {
                await _incentiveApplicationDataRepository.Add(aggregate.GetModel());
            }
            else
            {
                await _incentiveApplicationDataRepository.Update(aggregate.GetModel());
            }

            foreach (dynamic domainEvent in aggregate.FlushEvents())
            {
                await _domainEventDispatcher.Send(domainEvent);
            }
        }
コード例 #7
0
        public void Then_an_application_with_an_invalid_application_id_is_rejected()
        {
            //Arrange
            var incentiveApplication = _fixture.Create <IncentiveApplication>();
            var command = new SubmitIncentiveApplicationCommand(_fixture.Create <Guid>(), incentiveApplication.AccountId, _fixture.Create <DateTime>(), _fixture.Create <string>(), _fixture.Create <string>());

            IncentiveApplication nullResponse = null;

            _mockDomainRepository.Setup(x => x.Find(command.IncentiveApplicationId))
            .ReturnsAsync(nullResponse);

            // Act
            Func <Task> action = async() => await _sut.Handle(command);

            // Assert
            action.Should().Throw <InvalidRequestException>();
            _mockDomainRepository.Verify(m => m.Save(incentiveApplication), Times.Never);
        }
        public void Arrange()
        {
            _fixture = new Fixture();

            _sutModel = _fixture
                        .Build <IncentiveApplicationModel>()
                        .With(i => i.ApprenticeshipModels,
                              new List <ApprenticeshipModel>()
            {
                _fixture
                .Build <ApprenticeshipModel>()
                .With(a => a.WithdrawnByEmployer, false)
                .With(a => a.WithdrawnByCompliance, false)
                .Create()
            })
                        .Create();

            _sut = new IncentiveApplicationFactory().GetExisting(_sutModel.Id, _sutModel);
        }
        public async Task Then_multiple_apprenticeships_are_processed_for_the_eligibility_check()
        {
            //Arrange
            var command = new EarningsResilienceApplicationsCheckCommand();

            var application  = _fixture.Build <IncentiveApplicationModel>().With(x => x.Status, IncentiveApplicationStatus.Submitted).Create();
            var applications = new List <IncentiveApplication> {
                IncentiveApplication.Get(application.Id, application)
            };
            var apprenticeships = _fixture.CreateMany <Domain.IncentiveApplications.Apprenticeship>(3).ToList();

            applications[0].SetApprenticeships(apprenticeships);
            _applicationRepository.Setup(x => x.FindIncentiveApplicationsWithoutEarningsCalculations()).ReturnsAsync(applications);

            //Act
            await _sut.Handle(command);

            //Assert
            _domainEventDispatcher.Verify(x => x.Send <Submitted>(It.Is <Submitted>(x => x.Model == applications[0].GetModel()), It.IsAny <CancellationToken>()), Times.Once);
        }
コード例 #10
0
        public PausePaymentsSteps(TestContext testContext) : base(testContext)
        {
            _testContext      = testContext;
            _fixture          = new Fixture();
            _connectionString = _testContext.SqlDatabase.DatabaseInfo.ConnectionString;

            _application    = _fixture.Create <IncentiveApplication>();
            _apprenticeship = _fixture
                              .Build <IncentiveApplicationApprenticeship>()
                              .With(a => a.IncentiveApplicationId, _application.Id)
                              .Create();

            _apprenticeshipIncentive = _fixture
                                       .Build <ApprenticeshipIncentive>()
                                       .With(i => i.IncentiveApplicationApprenticeshipId, _apprenticeship.Id)
                                       .With(a => a.ULN, _apprenticeship.ULN)
                                       .With(a => a.AccountLegalEntityId, _application.AccountLegalEntityId)
                                       .With(i => i.PausePayments, false)
                                       .Create();
        }
        public ApprenticeshipIncentiveCreatedSteps(TestContext testContext) : base(testContext)
        {
            _testContext = testContext;
            _fixture     = new Fixture();
            var today = new DateTime(2021, 6, 30);

            _accountModel = _fixture.Create <Account>();

            _applicationModel = _fixture.Build <IncentiveApplication>()
                                .With(p => p.Status, IncentiveApplicationStatus.InProgress)
                                .With(p => p.AccountId, _accountModel.Id)
                                .With(p => p.AccountLegalEntityId, _accountModel.AccountLegalEntityId)
                                .Create();

            _apprenticeshipsModels = _fixture.Build <IncentiveApplicationApprenticeship>()
                                     .With(p => p.IncentiveApplicationId, _applicationModel.Id)
                                     .With(p => p.PlannedStartDate, today.AddMonths(-2))
                                     .With(p => p.DateOfBirth, today.AddYears(-20))
                                     .With(p => p.EarningsCalculated, false)
                                     .With(p => p.WithdrawnByCompliance, false)
                                     .With(p => p.WithdrawnByEmployer, false)
                                     .With(p => p.Phase, Phase.Phase1)
                                     .CreateMany(NumberOfApprenticeships).ToList();

            _apprenticeshipIncentive = _fixture.Build <ApprenticeshipIncentive>()
                                       .With(p => p.IncentiveApplicationApprenticeshipId, _apprenticeshipsModels.First().Id)
                                       .With(p => p.AccountId, _applicationModel.AccountId)
                                       .With(p => p.AccountLegalEntityId, _applicationModel.AccountLegalEntityId)
                                       .With(p => p.ApprenticeshipId, _apprenticeshipsModels.First().ApprenticeshipId)
                                       .With(p => p.StartDate, today.AddDays(1))
                                       .With(p => p.DateOfBirth, today.AddYears(-20))
                                       .With(p => p.Phase, Phase.Phase2)
                                       .Create();

            _pendingPayment = _fixture.Build <PendingPayment>()
                              .With(p => p.ApprenticeshipIncentiveId, _apprenticeshipIncentive.Id)
                              .With(p => p.AccountId, _apprenticeshipIncentive.AccountId)
                              .With(p => p.AccountLegalEntityId, _apprenticeshipIncentive.AccountLegalEntityId)
                              .Create();
        }
 public IncentiveApplication CreateNew(Guid id, long accountId, long accountLegalEntityId)
 {
     return(IncentiveApplication.New(id, accountId, accountLegalEntityId));
 }
 public IncentiveApplication GetExisting(Guid id, IncentiveApplicationModel model)
 {
     return(IncentiveApplication.Get(id, model));
 }