public void GetNextAvailableVacancyShouldReturnTheNextVacancyIfThereIsAnyAvailable()
        {
            const int vacancyReferenceNumber = 1;

            var vacancyPostingService = new Mock <IVacancyPostingService>();
            var vacancyLockingService = new Mock <IVacancyLockingService>();
            var providerService       = new Mock <IProviderService>();
            var vacancySummary        = new VacancySummary {
                VacancyReferenceNumber = vacancyReferenceNumber
            };

            int total;

            vacancyPostingService.Setup(
                avr => avr.GetWithStatus(It.IsAny <VacancySummaryByStatusQuery>(), out total))
            .Returns(new List <VacancySummary>());

            vacancyLockingService.Setup(
                vls => vls.GetNextAvailableVacancy(It.IsAny <string>(), It.IsAny <List <VacancySummary> >()))
            .Returns(vacancySummary);

            providerService.Setup(ps => ps.GetProvider(It.IsAny <int>())).Returns(new Provider());

            var vacancyProvider =
                new VacancyProviderBuilder()
                .With(vacancyPostingService)
                .With(vacancyLockingService)
                .With(providerService)
                .Build();

            var result = vacancyProvider.GetNextAvailableVacancy();

            result.VacancyReferenceNumber.Should().Be(vacancyReferenceNumber);
        }
        public void GetNextAvailableVacancyShouldReturnNullIfThereIsntAnyMoreVacancies()
        {
            var            vacancyPostingService = new Mock <IVacancyPostingService>();
            var            vacancyLockingService = new Mock <IVacancyLockingService>();
            var            providerService       = new Mock <IProviderService>();
            VacancySummary vacancySummary        = null;

            int total;

            vacancyPostingService.Setup(
                avr => avr.GetWithStatus(It.IsAny <VacancySummaryByStatusQuery>(), out total))
            .Returns(new List <VacancySummary>());

            vacancyLockingService.Setup(
                vls => vls.GetNextAvailableVacancy(It.IsAny <string>(), It.IsAny <List <VacancySummary> >()))
            .Returns(vacancySummary);

            providerService.Setup(ps => ps.GetProvider(It.IsAny <int>())).Returns(new Provider());

            var vacancyProvider =
                new VacancyProviderBuilder()
                .With(vacancyPostingService)
                .With(vacancyLockingService)
                .With(providerService)
                .Build();

            var result = vacancyProvider.GetNextAvailableVacancy();

            result.Should().BeNull();
        }