Example #1
0
        public void ThenGetsWageText(WageType wageType, string wageText)
        {
            var request = new CreateApprenticeshipRequest
            {
                WageType          = wageType,
                HoursPerWeek      = 35,
                ExpectedStartDate = new DateTime(2018, 4, 1),
                FixedWage         = 170,
                MinWage           = 150,
                MaxWage           = 290
            };
            var wageTextFormatter = new WageTextFormatter();

            wageTextFormatter.GetWageText(request).Should().Be(wageText);
        }
Example #2
0
        public void NoErrorsWhenWageFieldsAreValid(WageType wageTypeValue, int?yearlyFixedWageAmountValue, string wageAdditionalInfoValue)
        {
            var vacancy = new Vacancy
            {
                Wage = new Wage
                {
                    WageType = wageTypeValue,
                    FixedWageYearlyAmount     = Convert.ToDecimal(yearlyFixedWageAmountValue),
                    WageAdditionalInformation = wageAdditionalInfoValue
                }
            };

            var result = Validator.Validate(vacancy, VacancyRuleSet.Wage);

            result.HasErrors.Should().BeFalse();
            result.Errors.Should().HaveCount(0);
        }
Example #3
0
        public void ShouldShowWageText(WageType wagetype, WageClassification classification, decimal hoursPerWeek, string expectedDisplayText)
        {
            var details = new WorkingWeekAndWage();

            var viewModel = new VacancyViewModel
            {
                ProviderSite = new ProviderSiteViewModel()
                {
                    Address = new AddressViewModel()
                },
                FurtherVacancyDetailsViewModel = new FurtherVacancyDetailsViewModel
                {
                    VacancyDatesViewModel = new VacancyDatesViewModel
                    {
                        ClosingDate       = new DateViewModel(new DateTime(2016, 09, 01)),
                        PossibleStartDate = new DateViewModel(new DateTime(2016, 09, 08))
                    },
                    Wage = new WageViewModel()
                    {
                        Type = wagetype, Classification = classification, Unit = WageUnit.NotApplicable, HoursPerWeek = hoursPerWeek
                    }
                },
                NewVacancyViewModel = new NewVacancyViewModel
                {
                    VacancyOwnerRelationship = new VacancyOwnerRelationshipViewModel()
                    {
                        Employer = new EmployerViewModel()
                        {
                            Address = new AddressViewModel()
                        }
                    },
                    LocationAddresses = new List <VacancyLocationAddressViewModel>(),
                    OfflineVacancy    = false
                },
                TrainingDetailsViewModel              = new TrainingDetailsViewModel(),
                VacancyQuestionsViewModel             = new VacancyQuestionsViewModel(),
                VacancyRequirementsProspectsViewModel = new VacancyRequirementsProspectsViewModel(),
                Status      = VacancyStatus.ReservedForQA,
                VacancyType = VacancyType.Apprenticeship
            };

            var view = details.RenderAsHtml(_context, viewModel);

            view.GetElementbyId("vacancy-wage").InnerHtml.Should().Be(expectedDisplayText);
        }
        public void ShouldGetApprenticeshipMinimumDisplayText(WageType wageType, string hoursPerWeekString, string expected)
        {
            // Arrange.  This is frustrating. You cant use decimal parameters as decimals aren't primitives.
            decimal tempDecimal;
            decimal?hoursPerWeek = null;

            if (decimal.TryParse(hoursPerWeekString, out tempDecimal))
            {
                hoursPerWeek = tempDecimal;
            }

            // Act.
            string actual = WagePresenter.GetDisplayText(wageType, WageUnit.Annually, new WageDetails()
            {
                HoursPerWeek = Convert.ToDecimal(hoursPerWeek)
            });

            // Assert.
            actual.Should().Be(expected);
        }
Example #5
0
        public async Task WhenUpdated_ShouldFlagFieldIndicators(WageType wageType, decimal fixedWageYearlyAmmount, string wageAddtionalInformation, bool fieldIndicatorSet)
        {
            _fixture
            .WithWageType(WageType.FixedWage)
            .WithFixedWageYearlyAmount(10000)
            .WithWageAdditionalInformation("this is a value")
            .Setup();

            var wageEditModel = new WageEditModel
            {
                Ukprn                     = _fixture.Vacancy.TrainingProvider.Ukprn.Value,
                VacancyId                 = _fixture.Vacancy.Id,
                WageType                  = wageType,
                FixedWageYearlyAmount     = fixedWageYearlyAmmount.ToString(),
                WageAdditionalInformation = wageAddtionalInformation
            };

            await _fixture.PostWageEditModelAsync(wageEditModel);

            _fixture.VerifyProviderReviewFieldIndicators(FieldIdentifiers.Wage, fieldIndicatorSet);
        }
        public void ShouldGetDisplayText(
            WageType wageType, string wageText, string wageAmountString, string wageLowerString, string wageUpperString, string hoursPerWeekString, string expected)
        {
            // Arrange.  This is frustrating. You cant use decimal parameters as decimals aren't primitives.
            decimal tempDecimal;
            decimal?wageAmount      = null;
            decimal?wageAmountLower = null;
            decimal?wageAmountUpper = null;
            decimal?hoursPerWeek    = null;

            if (decimal.TryParse(wageAmountString, out tempDecimal))
            {
                wageAmount = tempDecimal;
            }

            if (decimal.TryParse(wageLowerString, out tempDecimal))
            {
                wageAmountLower = tempDecimal;
            }

            if (decimal.TryParse(wageUpperString, out tempDecimal))
            {
                wageAmountUpper = tempDecimal;
            }

            if (decimal.TryParse(hoursPerWeekString, out tempDecimal))
            {
                hoursPerWeek = tempDecimal;
            }

            // Act.
            var actual = WagePresenter.GetDisplayAmount(wageType, wageAmount, wageAmountLower, wageAmountUpper, wageText, Convert.ToDecimal(hoursPerWeek), null);

            // Assert.
            actual.Should().Be(expected);
        }
        public async Task AndCallingValidate(WageType wageTypeToValidate, bool expectedIsValid,
                                             string expectedErrorCodes, string expectedErrorMessages)
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());
            var request = new CreateApprenticeshipRequest
            {
                WageType = wageTypeToValidate
            };

            var context = GetValidationContextForProperty(request, req => req.WageType);

            var validator = fixture.Create <CreateApprenticeshipRequestValidator>();

            var result = await validator.ValidateAsync(context);

            result.IsValid.Should().Be(expectedIsValid);
            if (!expectedIsValid)
            {
                result.Errors.First().ErrorCode
                .Should().Be(expectedErrorCodes);
                result.Errors.First().ErrorMessage
                .Should().Be(expectedErrorMessages);
            }
        }
Example #8
0
        public static string GetDisplayText(WageType type, WageUnit unit, WageDetails details)
        {
            WageDetails wageDetails = details ?? new WageDetails();

            switch (type)
            {
            case WageType.Custom:
                return(FormatWageAmount(wageDetails.Amount));

            case WageType.ApprenticeshipMinimum:

                if (!wageDetails.HoursPerWeek.HasValue || wageDetails.HoursPerWeek.Value == 0)
                {
                    return($"£{WageConstants.UnknownText}");
                }

                if (unit == WageUnit.Annually)
                {
                    return(GetYearlyApprenticeshipMinimumWage(wageDetails.HoursPerWeek.Value, wageDetails.StartDate));
                }

                return(GetWeeklyApprenticeshipMinimumWage(wageDetails.HoursPerWeek.Value, wageDetails.StartDate));

            case WageType.NationalMinimum:
                if (!wageDetails.HoursPerWeek.HasValue || wageDetails.HoursPerWeek.Value == 0)
                {
                    return($"£{WageConstants.UnknownText}");
                }

                if (unit == WageUnit.Annually)
                {
                    return(GetYearlyNationalMinimumWage(wageDetails.HoursPerWeek.Value, wageDetails.StartDate));
                }

                return(GetWeeklyNationalMinimumWage(wageDetails.HoursPerWeek.Value, wageDetails.StartDate));

            case WageType.Text:

                //if it's unknown, return standard unknown text
                string displayText = wageDetails.Text ?? $"£{WageConstants.UnknownText}";

                //if it's not unknown, then prepend a '£' sign to its decimal value.
                decimal wageDecimal;

                //if it's already got a '£' sign, or is text, fail to parse and all is good => return value.
                if (decimal.TryParse(displayText, out wageDecimal))
                {
                    displayText = FormatWageAmount(wageDecimal);
                }

                return(displayText);

            case WageType.CustomRange:
                return
                    ($"{FormatWageAmount(wageDetails.LowerBound)} - {FormatWageAmount(wageDetails.UpperBound)}");

            case WageType.CompetitiveSalary:
                return(WageConstants.CompetitiveSalaryText);

            case WageType.ToBeAgreedUponAppointment:
                return(WageConstants.ToBeAGreedUponAppointmentText);

            case WageType.Unwaged:
                return(WageConstants.UnwagedText);

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type,
                                                      $"Invalid Wage Type: {type}");
            }
        }
Example #9
0
 public WageOrchestratorTestsFixture WithWageType(WageType wageType)
 {
     Vacancy.Wage.WageType = wageType;
     return(this);
 }
        public void ShouldGetDisplayAmountWithFrequencyPostfixNationalMinimums_After1stOct2016(WageType wageType, string expected)
        {
            // Act.
            var actual = WagePresenter.GetDisplayAmountWithFrequencyPostfix(wageType, null, null, null, null, WageUnit.Weekly, 37.5m, new DateTime(2016, 10, 1));

            // Assert.
            actual.Should().Be(expected);
        }