public void ShouldReturnInvalidVacancyIfTheUserCantQATheVacancy()
        {
            const int    vacanyReferenceNumber = 1;
            const string userName = "******";

            var requirementsProspectsViewModel = new Fixture().Build <VacancyRequirementsProspectsViewModel>().Create();

            var vacancyPostingService = new Mock <IVacancyPostingService>();
            var vacanyLockingService  = new Mock <IVacancyLockingService>();
            var currentUserService    = new Mock <ICurrentUserService>();

            currentUserService.Setup(cus => cus.CurrentUserName).Returns(userName);
            vacancyPostingService.Setup(vps => vps.GetVacancyByReferenceNumber(vacanyReferenceNumber))
            .Returns(new Vacancy {
                VacancyReferenceNumber = vacanyReferenceNumber
            });
            vacanyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(userName, It.IsAny <Vacancy>()))
            .Returns(false);

            var vacancyProvider =
                new VacancyProviderBuilder()
                .With(vacancyPostingService)
                .With(vacanyLockingService)
                .With(currentUserService)
                .Build();

            var result = vacancyProvider.UpdateVacancyWithComments(requirementsProspectsViewModel);

            result.Code.Should().Be(QAActionResultCode.InvalidVacancy);
            result.ViewModel.Should().BeNull();
        }
コード例 #2
0
        public void UpdateVacancyBasicDetailsShouldExpectVacancyReferenceNumber()
        {
            //Arrange
            var newVacancyVM = new Fixture().Build <NewVacancyViewModel>()
                               .With(vm => vm.VacancyReferenceNumber, null)
                               .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 = ""
            });

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

            //Act
            Action action = () => vacancyProvider.UpdateVacancyWithComments(newVacancyVM);

            //Assert
            action.ShouldThrow <ArgumentNullException>();
        }
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
        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 wage = new WageViewModel()
            {
                CustomType       = CustomWageType.Fixed,
                Amount           = null,
                AmountLowerBound = null,
                AmountUpperBound = null,
                Text             = null,
                Unit             = WageUnit.NotApplicable,
                HoursPerWeek     = null
            };
            var viewModel = new FurtherVacancyDetailsViewModel
            {
                DurationComment       = aString,
                VacancyDatesViewModel = new VacancyDatesViewModel
                {
                    PossibleStartDate = new DateViewModel(),
                    ClosingDate       = new DateViewModel()
                },
                VacancyReferenceNumber   = vacancyReferenceNumber,
                AutoSaveTimeoutInSeconds = autoSaveTimeoutInSeconds,
                Wage = wage
            };

            var vacancy = new Fixture().Build <Vacancy>()
                          .With(av => av.VacancyReferenceNumber, vacancyReferenceNumber)
                          .With(av => av.DurationComment, 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 <Wage, WageViewModel>(It.IsAny <Wage>())).Returns(wage);
            mapper.Setup(m => m.Map <Vacancy, FurtherVacancyDetailsViewModel>(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();

            //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.Code.Should().Be(QAActionResultCode.Ok);
        }