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