public void ProcessVacancyClosure(VacancyEligibleForClosure vacancyEligibleForClosure) { var vacancy = _vacancyReadRepository.Get(vacancyEligibleForClosure.VacancyId); switch (vacancy.Status) { case VacancyStatus.Live: vacancy.Status = VacancyStatus.Closed; _vacancyWriteRepository.Update(vacancy); break; default: return; } }
public void DoNothingWithVacancyThatIsNotLive(VacancyStatus status) { //Arrange var message = new VacancyEligibleForClosure(42); var vacancy = new Fixture().Build <Vacancy>() .With(x => x.Status, status) .With(x => x.VacancyId, message.VacancyId) .Create(); _apprenticeshipVacancyReadRepository.Setup(m => m.Get(message.VacancyId)).Returns(vacancy); //Act _processor.ProcessVacancyClosure(message); //Assert _apprenticeshipVacancyReadRepository.Verify(m => m.Get(message.VacancyId), Times.Once); _apprenticeshipVacancyWriteRepository.Verify(m => m.Update(It.IsAny <Vacancy>()), Times.Never()); }
public void UpdatesLiveStatusToClosed() { //Arrange var message = new VacancyEligibleForClosure(42); var liveVacancy = new Fixture().Build <Vacancy>() .With(x => x.Status, VacancyStatus.Live) .With(x => x.VacancyId, message.VacancyId) .Create(); _apprenticeshipVacancyReadRepository.Setup(m => m.Get(message.VacancyId)).Returns(liveVacancy); //Act _processor.ProcessVacancyClosure(message); //Assert _apprenticeshipVacancyReadRepository.Verify(m => m.Get(message.VacancyId), Times.Once); _apprenticeshipVacancyWriteRepository.Verify(m => m.Update(It.Is <Vacancy>(av => av.VacancyId == message.VacancyId)), Times.Once); _apprenticeshipVacancyWriteRepository.Verify(m => m.Update(It.Is <Vacancy>(av => av.Status == VacancyStatus.Closed)), Times.Once); _apprenticeshipVacancyWriteRepository.Verify(m => m.Update(It.IsAny <Vacancy>()), Times.Once); }
/// <summary> /// This queues up to 1000 vacancies for /// </summary> /// <param name="deadline"></param> public void QueueVacanciesForClosure(DateTime deadline) { var stopwatch = new Stopwatch(); stopwatch.Start(); var query = new ApprenticeshipVacancyQuery() { RequestedPage = 1, DesiredStatuses = new List<VacancyStatus>() { VacancyStatus.Live }, LatestClosingDate = deadline, EditedInRaa = false, PageSize = 1000 }; int resultCount; var eligibleVacancies = _vacancySummaryService.Find(query, out resultCount); var message = string.Format("Querying vacancies about to close took {0}", stopwatch.Elapsed); var counter = 0; foreach (var vacancy in eligibleVacancies) { var eligibleForClosure = new VacancyEligibleForClosure(vacancy.VacancyId); _serviceBus.PublishMessage(eligibleForClosure); counter ++; } stopwatch.Stop(); message += string.Format(". Queuing {0} vacancies for closure took {1}", counter, stopwatch.Elapsed); if (stopwatch.ElapsedMilliseconds > 60000) { _logService.Warn(message); } else { _logService.Info(message); } }