示例#1
0
        public void ShouldShowWageRangeInputsWhenWageRangeIsSelected()
        {
            var details = new FurtherVacancyDetails();

            var viewModel = new Fixture().Build <FurtherVacancyDetailsViewModel>()
                            .With(v => v.Status, VacancyStatus.Draft)
                            .With(v => v.Wage, new WageViewModel()
            {
                Classification = WageClassification.Custom, CustomType = CustomWageType.Ranged, AmountLowerBound = 200, AmountUpperBound = 500, Unit = WageUnit.Weekly
            })
                            .With(v => v.WageUnits, ApprenticeshipVacancyConverter.GetWageUnits())
                            .Create();

            var view = details.RenderAsHtml(viewModel);

            view.GetElementbyId("custom-wage").Attributes["checked"].Value.Should().Be("checked");
            view.GetElementbyId("custom-wage-fixed").Attributes["checked"]?.Value.Should().NotBe("checked");
            view.GetElementbyId("custom-wage-range").Attributes["checked"].Value.Should().Be("checked");
            view.GetElementbyId("Wage_AmountLowerBound").Should().NotBeNull();
            view.GetElementbyId("Wage_AmountLowerBound").Attributes["value"].Value.Should().Be("200");
            view.GetElementbyId("Wage_AmountUpperBound").Attributes["value"].Value.Should().Be("500");
            view.GetElementbyId("Wage_RangeUnit").Should().NotBeNull();
            view.GetElementbyId("Wage_RangeUnit")
            .ChildNodes.Any(cn => cn.Attributes["value"].Value == WageUnit.Weekly.ToString()).Should().BeTrue();
        }
示例#2
0
        public void ShouldShowTextDropdownAndReasonBoxWhenChooseTextIsSelected(PresetText wageType)
        {
            var details = new FurtherVacancyDetails();

            var viewModel = new Fixture().Build <FurtherVacancyDetailsViewModel>()
                            .With(v => v.Status, VacancyStatus.Draft)
                            .With(v => v.Wage, new WageViewModel()
            {
                Classification = WageClassification.LegacyText, PresetText = wageType
            })
                            .With(v => v.WageTextPresets, ApprenticeshipVacancyConverter.GetWageTextPresets())
                            .Create();

            var view = details.RenderAsHtml(viewModel);

            //TODO: Our HTML is invalid.  This causes the browser to fail to set the "checked" property.
            //A quick W3C check on this page resulted in 136 errors and 8 warnings.
            //This is not good at all.  The input appears to be selected but does not have the property.
            //So, we can't verify as we should.
            //view.GetElementbyId("preset-text").Attributes["checked"].Value.Should().Be("checked");

            view.GetElementbyId("Wage_PresetText").Should().NotBeNull();
            view.GetElementbyId("Wage_PresetText").ChildNodes.Any(x => x.Attributes.Contains("selected") && x.Attributes["selected"].Value == "selected").Should().BeTrue();
            view.GetElementbyId("Wage_PresetText").ChildNodes.Single(x => x.Attributes.Contains("selected") && x.Attributes["selected"].Value == "selected").Attributes["value"].Value.Should().Be(((int)wageType).ToString());
            view.GetElementbyId("Wage_WageTypeReason").Should().NotBeNull();
        }
        public void ShouldShowSaveAndExitButton()
        {
            var details = new VacancySummary();

            var viewModel = new FurtherVacancyDetailsViewModel
            {
                WageUnits       = ApprenticeshipVacancyConverter.GetWageUnits(),
                WageTextPresets = ApprenticeshipVacancyConverter.GetWageTextPresets(),
                DurationTypes   = ApprenticeshipVacancyConverter.GetDurationTypes(VacancyType.Apprenticeship)
            };

            var view = details.RenderAsHtml(viewModel);

            view.GetElementbyId("vacancySummaryAndExit").Should().NotBeNull("Should exists a save and exit button");
        }
        public MediatorResponse <FurtherVacancyDetailsViewModel> GetVacancySummaryViewModel(int vacancyReferenceNumber)
        {
            var vacancyViewModel = _vacancyQaProvider.GetVacancySummaryViewModel(vacancyReferenceNumber);

            var validationResult = _vacancySummaryViewModelServerValidator.Validate(vacancyViewModel, ruleSet: RuleSets.ErrorsAndWarnings);

            if (!validationResult.IsValid)
            {
                vacancyViewModel.WageUnits       = ApprenticeshipVacancyConverter.GetWageUnits();
                vacancyViewModel.WageTextPresets = ApprenticeshipVacancyConverter.GetWageTextPresets();
                vacancyViewModel.DurationTypes   = ApprenticeshipVacancyConverter.GetDurationTypes(vacancyViewModel.VacancyType);

                return(GetMediatorResponse(VacancyMediatorCodes.GetVacancySummaryViewModel.FailedValidation, vacancyViewModel, validationResult));
            }

            return(GetMediatorResponse(VacancyMediatorCodes.GetVacancySummaryViewModel.Ok, vacancyViewModel));
        }
        public MediatorResponse <FurtherVacancyDetailsViewModel> UpdateVacancy(FurtherVacancyDetailsViewModel viewModel)
        {
            var validationResult = _vacancySummaryViewModelServerValidator.Validate(viewModel, ruleSet: RuleSets.ErrorsAndWarnings);

            if (!validationResult.IsValid && (!viewModel.AcceptWarnings || validationResult.Errors.Any(e => (ValidationType?)e.CustomState != ValidationType.Warning)))
            {
                viewModel.WageUnits       = ApprenticeshipVacancyConverter.GetWageUnits();
                viewModel.WageTextPresets = ApprenticeshipVacancyConverter.GetWageTextPresets();
                viewModel.DurationTypes   = ApprenticeshipVacancyConverter.GetDurationTypes(viewModel.VacancyType);

                if (validationResult.Errors.All(e => (ValidationType?)e.CustomState == ValidationType.Warning))
                {
                    viewModel.AcceptWarnings = true;
                }

                return(GetMediatorResponse(VacancyMediatorCodes.UpdateVacancy.FailedValidation, viewModel, validationResult));
            }

            var updatedViewModel = _vacancyQaProvider.UpdateVacancyWithComments(viewModel);

            return(ReturnResult(updatedViewModel));
        }