Exemple #1
0
        public void Arrange()
        {
            _fixture = new Fixture();

            _learnerDataRepositoryMock = new Mock <ILearnerDataRepository>();
            _learnerFactoryMock        = new Mock <ILearnerFactory>();
            _domainEventDispatcherMock = new Mock <IDomainEventDispatcher>();
            ILearnerFactory learnerFactory = new LearnerFactory();

            _sut = new Commands.Persistence.LearnerDomainRepository(_learnerDataRepositoryMock.Object, learnerFactory,
                                                                    _domainEventDispatcherMock.Object);
        }
        public async Task Then_the_LearningPeriods_are_set_when_there_are_price_episodes_with_periods_for_the_apprenticeship()
        {
            //Arrange
            var command = new RefreshLearnerCommand(_apprenticeshipIncentiveId);

            var apprenticeship = _fixture.Create <Apprenticeship>();

            apprenticeship.SetProvider(_fixture.Create <Provider>());

            var apprenticeshipIncentiveModel = _fixture.Build <ApprenticeshipIncentiveModel>()
                                               .With(p => p.Apprenticeship, apprenticeship)
                                               .Create();

            _mockApprenticeshipIncentiveDomainRepository
            .Setup(m => m.Find(_apprenticeshipIncentiveId))
            .ReturnsAsync(new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.ApplicationApprenticeshipId, apprenticeshipIncentiveModel));

            var apprenticeshipIncentive = new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.Id, apprenticeshipIncentiveModel);

            var learner = new LearnerFactory().GetExisting(_fixture.Create <LearnerModel>());

            _mockLearnerDomainRepository
            .Setup(m => m.GetOrCreate(apprenticeshipIncentive))
            .ReturnsAsync(learner);

            var learnerSubmissionDto = _fixture
                                       .Build <LearnerSubmissionDto>()
                                       .With(l => l.Training, new List <TrainingDto> {
                _fixture.Create <TrainingDto>(),
                _fixture
                .Build <TrainingDto>()
                .With(p => p.Reference, "ZPROG001")
                .With(t => t.PriceEpisodes,
                      new List <PriceEpisodeDto> {
                    _fixture
                    .Build <PriceEpisodeDto>()
                    .With(pe => pe.Periods,
                          new List <PeriodDto> {
                        _fixture
                        .Build <PeriodDto>()
                        .With(p => p.ApprenticeshipId, apprenticeshipIncentive.Apprenticeship.Id)
                        .Create()
                    })
                    .Create()
                }).Create(),
                _fixture.Create <TrainingDto>()
            })
                                       .Create();

            _mockLearnerService
            .Setup(m => m.Get(It.IsAny <Learner>()))
            .ReturnsAsync(learnerSubmissionDto);

            //Act
            await _sut.Handle(command);

            //Assert
            _mockLearnerDomainRepository.Verify(m => m.Save(
                                                    It.Is <Learner>(l => l.GetModel().LearningPeriods.Count == 1)
                                                    ), Times.Once);
        }
        public async Task Then_the_inlearning_flag_is_true_when_there_is_a_pending_payment_with_a_matching_inlearning_period()
        {
            //Arrange
            var command = new RefreshLearnerCommand(_apprenticeshipIncentiveId);

            var apprenticeship = _fixture.Create <Apprenticeship>();

            apprenticeship.SetProvider(_fixture.Create <Provider>());

            var pendingPaymentModel = _fixture.Create <PendingPaymentModel>();

            pendingPaymentModel.PaymentMadeDate = null;

            var apprenticeshipIncentiveModel = _fixture.Build <ApprenticeshipIncentiveModel>()
                                               .With(p => p.Apprenticeship, apprenticeship)
                                               .With(p => p.PendingPaymentModels, new List <PendingPaymentModel> {
                pendingPaymentModel
            })
                                               .Create();

            _mockApprenticeshipIncentiveDomainRepository
            .Setup(m => m.Find(_apprenticeshipIncentiveId))
            .ReturnsAsync(new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.ApplicationApprenticeshipId, apprenticeshipIncentiveModel));

            var apprenticeshipIncentive = new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.Id, apprenticeshipIncentiveModel);

            var learner = new LearnerFactory().GetExisting(_fixture.Create <LearnerModel>());

            _mockLearnerDomainRepository
            .Setup(m => m.GetOrCreate(apprenticeshipIncentive))
            .ReturnsAsync(learner);

            var learnerSubmissionDto = _fixture
                                       .Build <LearnerSubmissionDto>()
                                       .With(l => l.Training, new List <TrainingDto> {
                _fixture.Create <TrainingDto>(),
                _fixture
                .Build <TrainingDto>()
                .With(p => p.Reference, "ZPROG001")
                .With(t => t.PriceEpisodes,
                      new List <PriceEpisodeDto> {
                    _fixture
                    .Build <PriceEpisodeDto>()
                    .With(pe => pe.StartDate, pendingPaymentModel.DueDate.AddDays(-1))
                    .With(pe => pe.EndDate, pendingPaymentModel.DueDate.AddDays(1))
                    .With(pe => pe.Periods,
                          new List <PeriodDto> {
                        _fixture
                        .Build <PeriodDto>()
                        .With(p => p.Period, pendingPaymentModel.PeriodNumber)
                        .With(p => p.ApprenticeshipId, apprenticeshipIncentive.Apprenticeship.Id)
                        .Create()
                    })
                    .Create()
                }).Create(),
                _fixture.Create <TrainingDto>()
            })
                                       .Create();

            _mockLearnerService
            .Setup(m => m.Get(It.IsAny <Learner>()))
            .ReturnsAsync(learnerSubmissionDto);

            //Act
            await _sut.Handle(command);

            //Assert
            _mockLearnerDomainRepository.Verify(m => m.Save(
                                                    It.Is <Learner>(l => l.SubmissionData.LearningData.IsInlearning == true)
                                                    ), Times.Once);
        }
Exemple #4
0
        public async Task Then_the_learning_stopped_status_has_false_stopped_flag_when_there_are_matching_learner_records_and_the_learning_has_resumed_from_stopped()
        {
            //Arrange
            var command = new RefreshLearnerCommand(_apprenticeshipIncentiveId);

            var apprenticeship = _fixture.Create <Apprenticeship>();

            apprenticeship.SetProvider(_fixture.Create <Provider>());

            var apprenticeshipIncentiveModel = _fixture.Build <ApprenticeshipIncentiveModel>()
                                               .With(p => p.Apprenticeship, apprenticeship)
                                               .With(p => p.Status, Enums.IncentiveStatus.Stopped)
                                               .Create();

            _mockApprenticeshipIncentiveDomainRepository
            .Setup(m => m.Find(_apprenticeshipIncentiveId))
            .ReturnsAsync(new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.ApplicationApprenticeshipId, apprenticeshipIncentiveModel));

            var apprenticeshipIncentive = new ApprenticeshipIncentiveFactory().GetExisting(apprenticeshipIncentiveModel.Id, apprenticeshipIncentiveModel);

            var learner = new LearnerFactory().GetExisting(_fixture.Create <LearnerModel>());

            _mockLearnerDomainRepository
            .Setup(m => m.GetOrCreate(apprenticeshipIncentive))
            .ReturnsAsync(learner);

            var learnerSubmissionDto = _fixture
                                       .Build <LearnerSubmissionDto>()
                                       .With(l => l.Training, new List <TrainingDto> {
                _fixture.Create <TrainingDto>(),
                _fixture
                .Build <TrainingDto>()
                .With(p => p.Reference, "ZPROG001")
                .With(t => t.PriceEpisodes,
                      new List <PriceEpisodeDto> {
                    _fixture
                    .Build <PriceEpisodeDto>()
                    .With(pe => pe.Periods,
                          new List <PeriodDto> {
                        _fixture
                        .Build <PeriodDto>()
                        .With(p => p.ApprenticeshipId, apprenticeshipIncentive.Apprenticeship.Id)
                        .Create()
                    })
                    .With(pe => pe.StartDate, DateTime.Today.AddDays(-20))
                    .With(pe => pe.EndDate, DateTime.Today.AddDays(10))
                    .Create(),
                    _fixture
                    .Build <PriceEpisodeDto>()
                    .With(pe => pe.Periods,
                          new List <PeriodDto> {
                        _fixture
                        .Build <PeriodDto>()
                        .With(p => p.ApprenticeshipId, apprenticeshipIncentive.Apprenticeship.Id)
                        .Create()
                    })
                    .With(pe => pe.StartDate, DateTime.Today.AddDays(-10))
                    .With(pe => pe.EndDate, DateTime.Today)
                    .Create()
                }).Create(),
                _fixture.Create <TrainingDto>()
            })
                                       .Create();

            _mockLearnerService
            .Setup(m => m.Get(It.IsAny <Learner>()))
            .ReturnsAsync(learnerSubmissionDto);

            //Act
            await _sut.Handle(command);

            //Assert
            _mockLearnerDomainRepository.Verify(m => m.Save(
                                                    It.Is <Learner>(l => !l.SubmissionData.LearningData.StoppedStatus.LearningStopped &&
                                                                    l.SubmissionData.LearningData.StoppedStatus.DateResumed.HasValue &&
                                                                    !l.SubmissionData.LearningData.StoppedStatus.DateStopped.HasValue)
                                                    ), Times.Once);
        }