Ejemplo n.º 1
0
 public Job(
     IAcademicYearEndExpiryProcessor academicYearProcessor,
     ICurrentDateTime currentDateTime,
     IAcademicYearDateProvider academicYearProvider,
     ILog logger)
 {
     _academicYearProcessor = academicYearProcessor;
     _currentDateTime       = currentDateTime;
     _academicYearProvider  = academicYearProvider;
     _logger = logger;
     _jobId  = $"AcademicYearEnd.WebJob.{DateTime.UtcNow.Ticks}";
 }
Ejemplo n.º 2
0
        public async Task ForAnyAcademicYearFromR14CutoffTimeThenExpirableItemsAreRetrievedAndExpired(
            int acYear,
            DateTime thisAcademicYearStartDate,
            DateTime thisAcademicYearEndDate,
            DateTime lastAcademicYearFundingPeriod,
            DateTime atTheTime

            )
        {
            // ARRANGE
            var testDatalockStatusItems = DatalockStatusTestData.GetData(acYear);

            var currentDatetime = new StubCurrentDateTime(atTheTime);

            _academicYearProvider.Setup(y => y.CurrentAcademicYearStartDate).Returns(thisAcademicYearStartDate);
            _academicYearProvider.Setup(y => y.CurrentAcademicYearEndDate).Returns(thisAcademicYearEndDate);
            _academicYearProvider.Setup(y => y.LastAcademicYearFundingPeriod).Returns(lastAcademicYearFundingPeriod);

            _academicYearEndProcessor = new AcademicYearEndExpiryProcessor(
                _logger.Object,
                _academicYearProvider.Object,
                _dataLockRepository.Object,
                _apprenticeshipUpdateRepository.Object,
                currentDatetime,
                Mock.Of <IMessagePublisher>(),
                Mock.Of <IApprenticeshipRepository>());

            _dataLockRepository.Setup(r => r.GetExpirableDataLocks(_academicYearProvider.Object.CurrentAcademicYearStartDate)).ReturnsAsync(testDatalockStatusItems);

            var id = "jobId";
            // ACT
            await _academicYearEndProcessor.RunDataLock(id);

            //ASSERT
            _logger.Verify(
                x => x.Info(
                    $"{nameof(AcademicYearEndExpiryProcessor)} run at {currentDatetime.Now} for Academic Year CurrentAcademicYearStartDate: {thisAcademicYearStartDate}, CurrentAcademicYearEndDate: {thisAcademicYearEndDate}, LastAcademicYearFundingPeriod: {lastAcademicYearFundingPeriod}, JobId: {id}"),
                Times.Once);

            _dataLockRepository.Verify(x => x.GetExpirableDataLocks(_academicYearProvider.Object.CurrentAcademicYearStartDate), Times.Once);

            _dataLockRepository.Verify(r => r.UpdateExpirableDataLocks(It.IsAny <long>(), It.IsAny <string>(), It.IsAny <DateTime>()), Times.Exactly(testDatalockStatusItems.Count));

            _logger.Verify(x => x.Info($"{nameof(AcademicYearEndExpiryProcessor)} expired {testDatalockStatusItems.Count} items, JobId: {id}"), Times.Once);
        }