Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 4
0
        /// <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);
            }
        }