public async Task Processes_UpdatedApprenticeship()
        {
            var approvalsEvent = new ApprenticeshipUpdatedApprovedEvent()
            {
                Uln = "12345",
                ApprenticeshipId = 1,
                StartDate        = DateTime.Today,
                EndDate          = DateTime.Today.AddYears(1),
                ApprovedOn       = DateTime.Today,
                TrainingCode     = "ABC",
                TrainingType     = ProgrammeType.Standard,
                PriceEpisodes    = new PriceEpisode[1]
                {
                    new PriceEpisode
                    {
                        FromDate = DateTime.Today,
                        ToDate   = DateTime.Today.AddYears(1),
                        Cost     = 1000m
                    }
                }
            };

            mocker.Mock <IApprenticeshipApprovedUpdatedService>()
            .Setup(svc => svc.UpdateApprenticeship(It.IsAny <UpdatedApprenticeshipApprovedModel>()))
            .ReturnsAsync(() => new ApprenticeshipModel
            {
                Id  = approvalsEvent.ApprenticeshipId,
                Uln = long.Parse(approvalsEvent.Uln),
            });

            mocker.Mock <IMapper>()
            .Setup(x => x.Map <UpdatedApprenticeshipApprovedModel>(It.IsAny <ApprenticeshipUpdatedApprovedEvent>()))
            .Returns <ApprenticeshipUpdatedApprovedEvent>(model => new UpdatedApprenticeshipApprovedModel
            {
                ApprenticeshipId = model.ApprenticeshipId,
                Uln = long.Parse(model.Uln),
                EstimatedStartDate          = model.StartDate,
                ApprenticeshipPriceEpisodes = new List <ApprenticeshipPriceEpisodeModel>()
            });

            var apprenticeshipProcessor = mocker.Create <ApprenticeshipProcessor>();
            await apprenticeshipProcessor.ProcessUpdatedApprenticeship(approvalsEvent);

            mocker.Mock <IEndpointInstance>()
            .Verify(svc => svc.Publish(It.Is <ApprenticeshipUpdated>(ev =>
                                                                     ev.Id == approvalsEvent.ApprenticeshipId &&
                                                                     ev.Uln.ToString() == approvalsEvent.Uln),
                                       It.IsAny <PublishOptions>()), Times.Once);

            mocker.Mock <IMapper>()
            .Verify(x => x.Map <UpdatedApprenticeshipApprovedModel>(It.IsAny <ApprenticeshipUpdatedApprovedEvent>()), Times.Once);
        }
Ejemplo n.º 2
0
        public async Task ProcessUpdatedApprenticeship(ApprenticeshipUpdatedApprovedEvent apprenticeshipApprovedEvent)
        {
            try
            {
                logger.LogDebug($"Now processing the apprenticeship update even for Apprenticeship id: {apprenticeshipApprovedEvent.ApprenticeshipId}");
                var model = mapper.Map <UpdatedApprenticeshipApprovedModel>(apprenticeshipApprovedEvent);

                var updatedApprenticeship = await apprenticeshipApprovedUpdatedService.UpdateApprenticeship(model).ConfigureAwait(false);
                await PublishApprenticeshipUpdate(updatedApprenticeship);

                logger.LogInfo($"Finished processing the apprenticeship updated event. Apprenticeship id: {updatedApprenticeship.Id}, employer account id: {updatedApprenticeship.AccountId}, Ukprn: {updatedApprenticeship.Ukprn}.");
            }
            catch (Exception ex)
            {
                logger.LogError($"Error processing the apprenticeship updated event. Error: {ex.Message}", ex);
                throw;
            }
        }
        public void Maps_ApprenticeshipUpdatedApprovedEvent_To_UpdatedApprenticeshipApprovalModel_Correctly()
        {
            var approvalsEvent = new ApprenticeshipUpdatedApprovedEvent
            {
                StartDate        = DateTime.Today.AddMonths(-12),
                ApprovedOn       = DateTime.Today.AddMonths(-13),
                ApprenticeshipId = 12,
                EndDate          = DateTime.Today.AddYears(1),
                TrainingCode     = "460-3-2",
                TrainingType     = ProgrammeType.Framework,
                Uln           = "123456",
                PriceEpisodes = new PriceEpisode[]
                {
                    new PriceEpisode {
                        FromDate = DateTime.Today.AddMonths(-12), Cost = 1000M, ToDate = DateTime.Today.AddDays(-1)
                    },
                    new PriceEpisode {
                        FromDate = DateTime.Today, Cost = 1200M
                    }
                }
            };
            var model = Mapper.Map <UpdatedApprenticeshipApprovedModel>(approvalsEvent);

            model.AgreedOnDate.Should().Be(approvalsEvent.ApprovedOn);
            model.EstimatedEndDate.Should().Be(approvalsEvent.EndDate);
            model.EstimatedStartDate.Should().Be(approvalsEvent.StartDate);
            model.ApprenticeshipId.Should().Be(approvalsEvent.ApprenticeshipId);
            model.StandardCode.Should().Be(0);
            model.FrameworkCode.Should().Be(460);
            model.ProgrammeType.Should().Be(3);
            model.PathwayCode.Should().Be(2);
            model.Uln.ToString().Should().Be(approvalsEvent.Uln);
            model.ApprenticeshipPriceEpisodes.Count.Should().Be(approvalsEvent.PriceEpisodes.Length);
            approvalsEvent.PriceEpisodes
            .All(pe => model.ApprenticeshipPriceEpisodes.Any(ape => ape.StartDate == pe.FromDate && ape.Cost == pe.Cost && ape.EndDate == pe.ToDate))
            .Should().BeTrue();
        }
 public Task Handle(ApprenticeshipUpdatedApprovedEvent message, IMessageHandlerContext context)
 {
     return(Log(message, context));
 }