public void RuleTwo_HoursPerWeek30to40_And_DurationLessThan12months(decimal hoursPerWeek, int expectedDuration, DurationType durationType) { var viewModel = new FurtherVacancyDetailsViewModel { Wage = new WageViewModel() { HoursPerWeek = hoursPerWeek }, Duration = expectedDuration, DurationType = durationType, VacancySource = VacancySource.Raa }; var vacancyViewModel = new VacancyViewModelBuilder().With(viewModel).Build(); _validator.Validate(viewModel, ruleSet: RuleSet); _aggregateValidator.Validate(vacancyViewModel); _aggregateValidator.Validate(vacancyViewModel, ruleSet: RuleSet); _validator.ShouldNotHaveValidationErrorFor(vm => vm.Wage, vm => vm.Wage.HoursPerWeek, viewModel, RuleSet); _validator.ShouldHaveValidationErrorFor(vm => vm.Duration, viewModel, RuleSet); _aggregateValidator.ShouldNotHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Wage, vm => vm.FurtherVacancyDetailsViewModel.Wage.HoursPerWeek, vacancyViewModel); _aggregateValidator.ShouldNotHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Wage, vm => vm.FurtherVacancyDetailsViewModel.Wage.HoursPerWeek, vacancyViewModel, RuleSet); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Duration, vacancyViewModel); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Duration, vacancyViewModel, RuleSet); }
public void RuleFour_HoursPerWeek16to30_And_DurationGreaterThanOrEqualTo12months_And_ExpectedDurationLessThanMinimumDuration(decimal hoursPerWeek, int expectedDuration, DurationType durationType, string expectedMessage) { var viewModel = new FurtherVacancyDetailsViewModel { Wage = new WageViewModel() { HoursPerWeek = hoursPerWeek }, Duration = expectedDuration, DurationType = durationType }; var vacancyViewModel = new VacancyViewModelBuilder().With(viewModel).Build(); var response = _validator.Validate(viewModel, ruleSet: RuleSet); _aggregateValidator.Validate(vacancyViewModel); var aggregateResponse = _aggregateValidator.Validate(vacancyViewModel, ruleSet: RuleSet); _validator.ShouldNotHaveValidationErrorFor(vm => vm.Wage, vm => vm.Wage.HoursPerWeek, viewModel, RuleSet); _validator.ShouldHaveValidationErrorFor(vm => vm.Duration, viewModel, RuleSet); _aggregateValidator.ShouldNotHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Wage, vm => vm.FurtherVacancyDetailsViewModel.Wage.HoursPerWeek, vacancyViewModel, RuleSet); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.Duration, vacancyViewModel, RuleSet); var error = response.Errors.SingleOrDefault(e => e.PropertyName == "Duration"); error.Should().NotBeNull(); error?.ErrorMessage.Should().Be(expectedMessage); var aggregateError = aggregateResponse.Errors.SingleOrDefault(e => e.PropertyName == "FurtherVacancyDetailsViewModel.Duration"); aggregateError.Should().NotBeNull(); aggregateError?.ErrorMessage.Should().Be(expectedMessage); }
public void DateCannotBeYesterday(VacancyStatus vacancyStatus, string expectedMessage) { var yesterday = DateTime.Today.AddDays(-1); var viewModel = new FurtherVacancyDetailsViewModel { VacancyDatesViewModel = new VacancyDatesViewModel { ClosingDate = new DateViewModel(yesterday), PossibleStartDate = new DateViewModel(yesterday), VacancyStatus = vacancyStatus }, Wage = new WageViewModel() }; var vacancyViewModel = new VacancyViewModelBuilder().With(viewModel).Build(); var response = _validator.Validate(viewModel, ruleSet: RuleSet); _aggregateValidator.Validate(vacancyViewModel); var aggregateResponse = _aggregateValidator.Validate(vacancyViewModel, ruleSet: RuleSet); _validator.ShouldHaveValidationErrorFor(vm => vm.VacancyDatesViewModel, vm => vm.VacancyDatesViewModel.ClosingDate, viewModel, RuleSet); _validator.ShouldHaveValidationErrorFor(vm => vm.VacancyDatesViewModel, vm => vm.VacancyDatesViewModel.PossibleStartDate, viewModel, RuleSet); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel.ClosingDate, vacancyViewModel); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel.ClosingDate, vacancyViewModel, RuleSet); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel.PossibleStartDate, vacancyViewModel); _aggregateValidator.ShouldHaveValidationErrorFor(vm => vm.FurtherVacancyDetailsViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel, vm => vm.FurtherVacancyDetailsViewModel.VacancyDatesViewModel.PossibleStartDate, vacancyViewModel, RuleSet); var closingDateError = response.Errors.SingleOrDefault(e => e.PropertyName == "VacancyDatesViewModel.ClosingDate"); closingDateError.Should().NotBeNull(); closingDateError?.ErrorMessage.Should().Be(expectedMessage); var closingDateAggregateError = aggregateResponse.Errors.SingleOrDefault(e => e.PropertyName == "FurtherVacancyDetailsViewModel.VacancyDatesViewModel.ClosingDate"); closingDateAggregateError.Should().NotBeNull(); closingDateAggregateError?.ErrorMessage.Should().Be(expectedMessage); var possibleStartDateError = response.Errors.SingleOrDefault(e => e.PropertyName == "VacancyDatesViewModel.PossibleStartDate"); possibleStartDateError.Should().NotBeNull(); possibleStartDateError?.ErrorMessage.Should().Be(VacancyViewModelMessages.PossibleStartDate.AfterTodayErrorText); var possibleStartDateAggregateError = aggregateResponse.Errors.SingleOrDefault(e => e.PropertyName == "FurtherVacancyDetailsViewModel.VacancyDatesViewModel.PossibleStartDate"); possibleStartDateAggregateError.Should().NotBeNull(); possibleStartDateAggregateError?.ErrorMessage.Should().Be(VacancyViewModelMessages.PossibleStartDate.AfterTodayErrorText); }