public void ShouldReserveTheNextVacancyAvailableIfTheOriginalOneIsNotAvailable() { const int vacancyReferenceNumber = 1; const int nextVacanyReferenceNumber = 2; const string userName = "******"; var nextVacancySummary = new VacancySummary { VacancyReferenceNumber = nextVacanyReferenceNumber }; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(false); vacancyLockingService.Setup(vls => vls.GetNextAvailableVacancy(userName, It.IsAny <List <VacancySummary> >())) .Returns(nextVacancySummary); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber, nextVacanyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); var result = provider.ReserveVacancyForQA(vacancyReferenceNumber); result.VacancyReferenceNumber.Should().Be(nextVacanyReferenceNumber); vacancyProviderBuilder.VacancyPostingService.Verify(ps => ps.ReserveVacancyForQA(nextVacanyReferenceNumber), Times.Once); }
public void ShouldReserveAndReturnTheVacancyIfItsPossibleToReserveItForQA() { const int vacancyReferenceNumber = 1; const string userName = "******"; var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.Build(); var result = provider.ReserveVacancyForQA(vacancyReferenceNumber); vacancyProviderBuilder.VacancyPostingService.Verify(ps => ps.ReserveVacancyForQA(vacancyReferenceNumber), Times.Once); result.VacancyReferenceNumber.Should().Be(vacancyReferenceNumber); }
public void ShouldReturnTheViewModelIfTheUserCanQAIt() { const int vacancyReferenceNumber = 1; const string userName = "******"; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(true); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); var viewModel = provider.ReviewVacancy(vacancyReferenceNumber); viewModel.VacancyReferenceNumber.Should().Be(vacancyReferenceNumber); }
public void ShouldCallIsAvailableForQA() { const int vacancyReferenceNumber = 1; const string userName = "******"; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(false); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); provider.ReviewVacancy(vacancyReferenceNumber); vacancyProviderBuilder.VacancyPostingService.Verify(ps => ps.GetVacancyByReferenceNumber(vacancyReferenceNumber), Times.Once); vacancyLockingService.Verify(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>()), Times.Once); }
public void ShouldReturnNullIfThereIsNotAnyAvailableVacancy() { const int vacancyReferenceNumber = 1; const string userName = "******"; VacancySummary nextVacancySummary = null; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(false); vacancyLockingService.Setup(vls => vls.GetNextAvailableVacancy(userName, It.IsAny <List <VacancySummary> >())) .Returns(nextVacancySummary); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); var result = provider.ReserveVacancyForQA(vacancyReferenceNumber); result.Should().BeNull(); }
public void ShouldCallUpdateIfTheUserIsTheOwnerOfTheVacancy() { const int vacancyReferenceNumber = 1; const string userName = "******"; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(true); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); provider.UnReserveVacancyForQA(vacancyReferenceNumber); vacancyProviderBuilder.VacancyPostingService.Verify( ps => ps.UnReserveVacancyForQa( It.Is <int>(v => v == vacancyReferenceNumber)), Times.Once); }
public void ShouldNotCallUpdateIfTheUserIsTheOwnerOfTheVacancy() { const int vacancyReferenceNumber = 1; const string userName = "******"; var vacancyLockingService = new Mock <IVacancyLockingService>(); vacancyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <VacancySummary>())) .Returns(false); var vacancyProviderBuilder = VacancyProviderTestHelper.GetBasicVacancyProviderBuilder(userName, vacancyReferenceNumber); var provider = vacancyProviderBuilder.With(vacancyLockingService).Build(); provider.UnReserveVacancyForQA(vacancyReferenceNumber); vacancyProviderBuilder.VacancyPostingService.Verify( ps => ps.UpdateVacancy( It.Is <Vacancy>(v => v.VacancyReferenceNumber == vacancyReferenceNumber && v.QAUserName == null && v.Status == VacancyStatus.Submitted)), Times.Never); }