public void ShouldReturnInvalidVacancyIfTheVacancyIsNotAvailableToQA() { const int vacancyReferenceNumber = 1; var provider = new Mock <IVacancyQAProvider>(); var vacancy = VacancyMediatorTestHelper.GetValidVacancyViewModel(vacancyReferenceNumber); var qaActionResult = new QAActionResult <VacancyRequirementsProspectsViewModel>(QAActionResultCode.InvalidVacancy); provider.Setup(p => p.UpdateVacancyWithComments(vacancy.VacancyRequirementsProspectsViewModel)).Returns(qaActionResult); var mediator = new VacancyMediatorBuilder().With(provider).Build(); var result = mediator.UpdateVacancy(vacancy.VacancyRequirementsProspectsViewModel); result.AssertMessage(VacancyMediatorCodes.UpdateVacancy.InvalidVacancy, VacancyViewModelMessages.InvalidVacancy, UserMessageLevel.Error); }
private static MediatorResponse <T> ReturnResult <T>(QAActionResult <T> result) where T : IPartialVacancyViewModel { switch (result.Code) { case QAActionResultCode.Ok: return(GetMediatorResponse(VacancyMediatorCodes.UpdateVacancy.Ok, result.ViewModel)); case QAActionResultCode.InvalidVacancy: return(GetMediatorResponse(VacancyMediatorCodes.UpdateVacancy.InvalidVacancy, default(T), VacancyViewModelMessages.InvalidVacancy, UserMessageLevel.Error)); default: throw new ArgumentOutOfRangeException(); } }
public void ShouldReturnOkIsThereIsNotAnyIssue() { const int vacancyReferenceNumber = 1; var provider = new Mock <IVacancyQAProvider>(); var vacancy = VacancyMediatorTestHelper.GetValidVacancyViewModel(vacancyReferenceNumber); var qaActionResult = new QAActionResult <VacancyRequirementsProspectsViewModel>(QAActionResultCode.Ok, vacancy.VacancyRequirementsProspectsViewModel); provider.Setup(p => p.UpdateVacancyWithComments(vacancy.VacancyRequirementsProspectsViewModel)).Returns(qaActionResult); var mediator = new VacancyMediatorBuilder().With(provider).Build(); var result = mediator.UpdateVacancy(vacancy.VacancyRequirementsProspectsViewModel); result.AssertCodeAndMessage(VacancyMediatorCodes.UpdateVacancy.Ok); result.ViewModel.ShouldBeEquivalentTo(vacancy.VacancyRequirementsProspectsViewModel); }
public void ShouldReturnOKIfTheUserCanLockTheVacancy() { //Arrange const string ukprn = "ukprn"; //const int QAVacancyTimeout = 10; const string userName = "******"; var utcNow = DateTime.UtcNow; const int vacancyReferenceNumber = 1; const string aString = "aString"; const int autoSaveTimeoutInSeconds = 60; var sectorList = new List <Sector> { new Fixture().Build <Sector>().Create() }; var viewModel = new VacancyRequirementsProspectsViewModel { VacancyReferenceNumber = vacancyReferenceNumber, DesiredQualifications = aString, AutoSaveTimeoutInSeconds = autoSaveTimeoutInSeconds }; var vacancy = new Fixture().Build <Vacancy>() .With(av => av.VacancyReferenceNumber, vacancyReferenceNumber) .With(av => av.DesiredQualifications, aString) .Create(); var configurationService = new Mock <IConfigurationService>(); configurationService.Setup(x => x.Get <CommonWebConfiguration>()) .Returns(new CommonWebConfiguration { BlacklistedCategoryCodes = "" }); configurationService.Setup(x => x.Get <RecruitWebConfiguration>()) .Returns(new RecruitWebConfiguration { AutoSaveTimeoutInSeconds = autoSaveTimeoutInSeconds }); var referenceDataService = new Mock <IReferenceDataService>(); referenceDataService.Setup(m => m.GetSectors()).Returns(sectorList); var providerService = new Mock <IProviderService>(); providerService.Setup(ps => ps.GetProvider(ukprn, true)).Returns(new Provider()); var vacancyPostingService = new Mock <IVacancyPostingService>(); var currentUserService = new Mock <ICurrentUserService>(); currentUserService.Setup(cus => cus.CurrentUserName).Returns(userName); var dateTimeService = new Mock <IDateTimeService>(); dateTimeService.Setup(dts => dts.UtcNow).Returns(utcNow); var vacancylockingService = new Mock <IVacancyLockingService>(); vacancylockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, vacancy)).Returns(true); //Arrange: get AV, update retrieved AV with NVVM, save modified AV returning same modified AV, map AV to new NVVM with same properties as input vacancyPostingService.Setup( vps => vps.GetVacancyByReferenceNumber(vacancyReferenceNumber)).Returns(vacancy); vacancyPostingService.Setup(vps => vps.UpdateVacancy(It.IsAny <Vacancy>())).Returns((Vacancy av) => av); var mapper = new Mock <IMapper>(); mapper.Setup(m => m.Map <Vacancy, VacancyRequirementsProspectsViewModel>(It.IsAny <Vacancy>())) .Returns((Vacancy av) => viewModel); var vacancyProvider = new VacancyProviderBuilder().With(vacancyPostingService) .With(providerService) .With(configurationService) .With(referenceDataService) .With(mapper) .With(currentUserService) .With(dateTimeService) .With(vacancylockingService) .Build(); var expectedResult = new QAActionResult <VacancyRequirementsProspectsViewModel>(QAActionResultCode.Ok, viewModel); //Act var result = vacancyProvider.UpdateVacancyWithComments(viewModel); //Assert vacancyPostingService.Verify( vps => vps.GetVacancyByReferenceNumber(viewModel.VacancyReferenceNumber), Times.Once); vacancyPostingService.Verify( vps => vps.UpdateVacancy( It.Is <Vacancy>(av => av.VacancyReferenceNumber == viewModel.VacancyReferenceNumber && av.QAUserName == userName && av.DateStartedToQA == utcNow))); result.ShouldBeEquivalentTo(expectedResult); }
public void ShouldReturnOKIfTheUserCanLockTheVacancy() { //Arrange const string ukprn = "ukprn"; const string userName = "******"; var utcNow = DateTime.UtcNow; var newVacancyVM = new Fixture().Build <NewVacancyViewModel>().Create(); var vacancy = new Fixture().Build <Vacancy>() .With(av => av.VacancyReferenceNumber, newVacancyVM.VacancyReferenceNumber.Value) .With(av => av.OfflineApplicationInstructionsComment, Guid.NewGuid().ToString()) .With(av => av.OfflineApplicationUrlComment, Guid.NewGuid().ToString()) .With(av => av.ShortDescriptionComment, Guid.NewGuid().ToString()) .With(av => av.TitleComment, Guid.NewGuid().ToString()) .With(av => av.OfflineApplicationUrl, $"http://www.google.com/{Guid.NewGuid()}") .With(av => av.OfflineApplicationInstructions, Guid.NewGuid().ToString()) .With(av => av.ShortDescription, Guid.NewGuid().ToString()) .With(av => av.Title, Guid.NewGuid().ToString()) .Create(); var sectorList = new List <Sector> { new Fixture().Build <Sector>().Create() }; var vacancyPostingService = new Mock <IVacancyPostingService>(); var providerService = new Mock <IProviderService>(); var configurationService = new Mock <IConfigurationService>(); configurationService.Setup(x => x.Get <CommonWebConfiguration>()) .Returns(new CommonWebConfiguration { BlacklistedCategoryCodes = "" }); configurationService.Setup(x => x.Get <RecruitWebConfiguration>()) .Returns(new RecruitWebConfiguration { AutoSaveTimeoutInSeconds = 60 }); var referenceDataService = new Mock <IReferenceDataService>(); referenceDataService.Setup(m => m.GetSectors()).Returns(sectorList); providerService.Setup(ps => ps.GetProvider(ukprn, true)).Returns(new Provider()); var currentUserService = new Mock <ICurrentUserService>(); currentUserService.Setup(cus => cus.CurrentUserName).Returns(userName); var dateTimeService = new Mock <IDateTimeService>(); dateTimeService.Setup(dts => dts.UtcNow).Returns(utcNow); var vacancylockingService = new Mock <IVacancyLockingService>(); vacancylockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, vacancy)).Returns(true); //Arrange: get AV, update retrieved AV with NVVM, save modified AV returning same modified AV, map AV to new NVVM with same properties as input vacancyPostingService.Setup( vps => vps.GetVacancyByReferenceNumber(newVacancyVM.VacancyReferenceNumber.Value)).Returns(vacancy); vacancyPostingService.Setup(vps => vps.UpdateVacancy(It.IsAny <Vacancy>())).Returns((Vacancy av) => av); var mapper = new Mock <IMapper>(); mapper.Setup(m => m.Map <Vacancy, NewVacancyViewModel>(It.IsAny <Vacancy>())) .Returns((Vacancy av) => newVacancyVM); var vacancyProvider = new VacancyProviderBuilder().With(vacancyPostingService) .With(providerService) .With(configurationService) .With(referenceDataService) .With(mapper) .With(currentUserService) .With(dateTimeService) .With(vacancylockingService) .Build(); var expectedResult = new QAActionResult <NewVacancyViewModel>(QAActionResultCode.Ok, newVacancyVM); //Act var result = vacancyProvider.UpdateVacancyWithComments(newVacancyVM); //Assert vacancyPostingService.Verify( vps => vps.GetVacancyByReferenceNumber(newVacancyVM.VacancyReferenceNumber.Value), Times.Once); vacancyPostingService.Verify( vps => vps.UpdateVacancy( It.Is <Vacancy>(av => av.VacancyReferenceNumber == newVacancyVM.VacancyReferenceNumber.Value && av.QAUserName == userName && av.DateStartedToQA == utcNow))); result.ShouldBeEquivalentTo(expectedResult); }
public void ShouldReturnOKIfTheUserCanLockTheVacancy() { //Arrange const string userName = "******"; var utcNow = DateTime.UtcNow; const int vacancyReferenceNumber = 1; const string aString = "aString"; var viewModel = new VacancyQuestionsViewModel { FirstQuestion = aString, SecondQuestion = aString, FirstQuestionComment = aString, SecondQuestionComment = aString, VacancyReferenceNumber = vacancyReferenceNumber, AutoSaveTimeoutInSeconds = 60 }; var vacancy = new Fixture().Build <Vacancy>() .With(av => av.VacancyReferenceNumber, vacancyReferenceNumber) .With(av => av.FirstQuestion, aString) .With(av => av.SecondQuestion, aString) .With(av => av.FirstQuestionComment, aString) .With(av => av.SecondQuestionComment, aString) .Create(); var vacancyPostingService = new Mock <IVacancyPostingService>(); var currentUserService = new Mock <ICurrentUserService>(); currentUserService.Setup(cus => cus.CurrentUserName).Returns(userName); var dateTimeService = new Mock <IDateTimeService>(); dateTimeService.Setup(dts => dts.UtcNow).Returns(utcNow); var vacancylockingService = new Mock <IVacancyLockingService>(); vacancylockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, vacancy)).Returns(true); var configurationService = new Mock <IConfigurationService>(); configurationService.Setup(x => x.Get <RecruitWebConfiguration>()) .Returns(new RecruitWebConfiguration { AutoSaveTimeoutInSeconds = 60 }); //Arrange: get AV, update retrieved AV with NVVM, save modified AV returning same modified AV, map AV to new NVVM with same properties as input vacancyPostingService.Setup( vps => vps.GetVacancyByReferenceNumber(vacancyReferenceNumber)).Returns(vacancy); vacancyPostingService.Setup(vps => vps.UpdateVacancy(It.IsAny <Vacancy>())).Returns((Vacancy av) => av); var mapper = new Mock <IMapper>(); mapper.Setup(m => m.Map <Vacancy, VacancyQuestionsViewModel>(It.IsAny <Vacancy>())) .Returns((Vacancy av) => viewModel); var vacancyProvider = new VacancyProviderBuilder().With(vacancyPostingService) .With(mapper) .With(currentUserService) .With(dateTimeService) .With(vacancylockingService) .With(configurationService) .Build(); var expectedResult = new QAActionResult <VacancyQuestionsViewModel>(QAActionResultCode.Ok, viewModel); //Act var result = vacancyProvider.UpdateVacancyWithComments(viewModel); //Assert vacancyPostingService.Verify( vps => vps.GetVacancyByReferenceNumber(viewModel.VacancyReferenceNumber), Times.Once); vacancyPostingService.Verify( vps => vps.UpdateVacancy( It.Is <Vacancy>(av => av.VacancyReferenceNumber == viewModel.VacancyReferenceNumber && av.QAUserName == userName && av.DateStartedToQA == utcNow))); result.ShouldBeEquivalentTo(expectedResult); }