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); }
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); }
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); }
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); } }
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}"); } }
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); }