public async Task ProcessPausedApprenticeship(ApprenticeshipPausedEvent pausedEvent) { try { logger.LogDebug($"Now processing the apprenticeship paused event for Apprenticeship id: {pausedEvent.ApprenticeshipId}"); var model = new UpdatedApprenticeshipPausedModel { ApprenticeshipId = pausedEvent.ApprenticeshipId, PauseDate = pausedEvent.PausedOn, }; var updatedApprenticeship = await apprenticeshipPauseService.UpdateApprenticeship(model).ConfigureAwait(false); await PublishApprenticeshipUpdate(updatedApprenticeship); logger.LogInfo($"Finished processing the apprenticeship paused event. Apprenticeship id: {updatedApprenticeship.Id}, employer account id: {updatedApprenticeship.AccountId}, Ukprn: {updatedApprenticeship.Ukprn}."); } catch (Exception ex) { logger.LogError($"Error processing the apprenticeship paused event. Error: {ex.Message}", ex); throw; } }
public async Task Updates_Paused_Apprenticeship() { var updatedApprenticeship = new UpdatedApprenticeshipPausedModel { ApprenticeshipId = 629959, PauseDate = DateTime.Today }; var apprenticeshipModel = new ApprenticeshipModel { Id = updatedApprenticeship.ApprenticeshipId, StopDate = DateTime.Today.AddDays(-5), Status = ApprenticeshipStatus.Active, Uln = 1, AgreedOnDate = DateTime.Today.AddDays(-2), EstimatedStartDate = DateTime.Today.AddDays(-1), EstimatedEndDate = DateTime.Today.AddYears(2), ProgrammeType = 25, StandardCode = 17, ApprenticeshipPriceEpisodes = new List <ApprenticeshipPriceEpisodeModel> { new ApprenticeshipPriceEpisodeModel { Id = 1, ApprenticeshipId = updatedApprenticeship.ApprenticeshipId, StartDate = new DateTime(2017, 08, 06), Cost = 15000.00m }, new ApprenticeshipPriceEpisodeModel { Id = 161, ApprenticeshipId = updatedApprenticeship.ApprenticeshipId, StartDate = new DateTime(2017, 08, 10), Cost = 1000.00m } }, Ukprn = 100, TransferSendingEmployerAccountId = 101, AccountId = 1, AgreementId = "1", IsLevyPayer = true, LegalEntityName = "Test Employer", FrameworkCode = 1, PathwayCode = 1, }; mocker.Mock <IApprenticeshipRepository>() .Setup(x => x.Get(It.Is <long>(id => id == apprenticeshipModel.Id))) .ReturnsAsync(apprenticeshipModel); mocker.Mock <IApprenticeshipRepository>() .Setup(x => x.AddApprenticeshipPause(It.Is <ApprenticeshipPauseModel>(a => a.ApprenticeshipId == apprenticeshipModel.Id))) .Returns(Task.CompletedTask); var service = mocker.Create <ApprenticeshipPauseService>(); await service.UpdateApprenticeship(updatedApprenticeship); mocker.Mock <IApprenticeshipRepository>() .Verify(x => x.UpdateApprenticeship(It.Is <ApprenticeshipModel>(model => model.Id == updatedApprenticeship.ApprenticeshipId && model.Status == ApprenticeshipStatus.Paused && model.ApprenticeshipPriceEpisodes.Count == 2 && model.ApprenticeshipPriceEpisodes[0].Cost == apprenticeshipModel.ApprenticeshipPriceEpisodes[0].Cost && model.ApprenticeshipPriceEpisodes[0].StartDate == apprenticeshipModel.ApprenticeshipPriceEpisodes[0].StartDate && model.ApprenticeshipPriceEpisodes[1].StartDate == apprenticeshipModel.ApprenticeshipPriceEpisodes[1].StartDate && model.ApprenticeshipPriceEpisodes[1].Cost == apprenticeshipModel.ApprenticeshipPriceEpisodes[1].Cost && model.Uln == apprenticeshipModel.Uln && model.AgreedOnDate == apprenticeshipModel.AgreedOnDate && model.EstimatedStartDate == apprenticeshipModel.EstimatedStartDate && model.EstimatedEndDate == apprenticeshipModel.EstimatedEndDate && model.ProgrammeType == apprenticeshipModel.ProgrammeType && model.StandardCode == apprenticeshipModel.StandardCode && model.Ukprn == apprenticeshipModel.Ukprn && model.TransferSendingEmployerAccountId == apprenticeshipModel.TransferSendingEmployerAccountId && model.AccountId == apprenticeshipModel.AccountId && model.AgreementId == apprenticeshipModel.AgreementId && model.IsLevyPayer == apprenticeshipModel.IsLevyPayer && model.LegalEntityName == apprenticeshipModel.LegalEntityName && model.FrameworkCode == apprenticeshipModel.FrameworkCode && model.PathwayCode == apprenticeshipModel.FrameworkCode )), Times.Once); mocker.Mock <IApprenticeshipRepository>() .Verify(x => x.Get(It.Is <long>(id => id == apprenticeshipModel.Id)), Times.Exactly(2)); mocker.Mock <IApprenticeshipRepository>() .Verify(x => x.AddApprenticeshipPause(It.Is <ApprenticeshipPauseModel>(a => a.ApprenticeshipId == apprenticeshipModel.Id)), Times.Once); }