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