Browse Source

Update error message

pull/1995/head
Kat 3 years ago
parent
commit
5b6b198889
  1. 7
      app/models/validations/financial_validations.rb
  2. 2
      config/locales/en.yml
  3. 80
      spec/models/validations/financial_validations_spec.rb

7
app/models/validations/financial_validations.rb

@ -195,8 +195,11 @@ private
charge_name = CHARGE_NAMES[charge]
frequency = record.form.get_question("period", record).label_from_value(record.period).downcase
letting_type = NEEDSTYPE_VALUES[record.needstype].to_s.humanize(capitalize: false)
provider_type = PROVIDER_TYPE[provider_type].to_s.humanize(capitalize: false)
record.errors.add charge, :outside_the_range, message: I18n.t("validations.financial.rent.out_of_range", charge_name:, maximum_per_week:, frequency:, letting_type:, provider_type:)
provider_type_label = PROVIDER_TYPE[provider_type].to_s.humanize(capitalize: false)
maximum_per_period = record.weekly_to_value_per_period(maximum_per_week)
record.errors.add charge, :outside_the_range, message: I18n.t("validations.financial.rent.out_of_range", charge_name:, maximum_per_period:, frequency:, letting_type:, provider_type: provider_type_label)
record.errors.add :period, :outside_the_range, message: I18n.t("validations.financial.rent.out_of_range", charge_name:, maximum_per_period:, frequency:, letting_type:, provider_type: provider_type_label)
end
end

2
config/locales/en.yml

@ -367,7 +367,7 @@ en:
negative_currency: "Enter an amount above 0"
rent:
less_than_shortfall: "Enter an amount that is more than the shortfall in basic rent"
out_of_range: "Enter a value for the %{charge_name} between £0 and £%{maximum_per_week} per week. £%{maximum_per_week} is the maximum limit per week for rent and charges paid %{frequency} for %{letting_type} lettings owned by a %{provider_type}."
out_of_range: "Enter a value for the %{charge_name} between £0 and %{maximum_per_period} paid %{frequency}. %{maximum_per_period} is the max limit for rent and charges paid %{frequency} for %{letting_type} lettings owned by a %{provider_type}."
ecstat:
over_hard_max: "Net income of %{hard_max} per week is too high given the tenant’s working situation"
brent:

80
spec/models/validations/financial_validations_spec.rb

@ -265,62 +265,62 @@ RSpec.describe Validations::FinancialValidations do
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "scharge", value: 801 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£800.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "scharge", value: 3471 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£3,466.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "scharge", value: 1601 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£1,600.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "pscharge", value: 701 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£700.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "pscharge", value: 3200 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£3,033.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "pscharge", value: 1401 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£1,400.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "supcharg", value: 801 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£800.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "supcharg", value: 3471 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£3,466.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "supcharg", value: 1601 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£1,600.00",
}].each do |test_case|
it "does not allow charges outside the range when period is #{test_case[:period][:label]}" do
record.period = test_case[:period][:value]
record[test_case[:charge][:field]] = test_case[:charge][:value]
financial_validator.validate_rent_amount(record)
expect(record.errors[test_case[:charge][:field]])
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_week: test_case[:maximum_per_week], frequency: test_case[:period][:label], letting_type: "general needs", provider_type: "private registered provider"))
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_period: test_case[:maximum_per_period], frequency: test_case[:period][:label], letting_type: "general needs", provider_type: "private registered provider"))
end
end
@ -377,62 +377,62 @@ RSpec.describe Validations::FinancialValidations do
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "scharge", value: 801 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£800.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "scharge", value: 3471 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£3,466.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "scharge", value: 1601 },
charge_name: "service charge",
maximum_per_week: 800,
maximum_per_period: "£1,600.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "pscharge", value: 701 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£700.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "pscharge", value: 3200 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£3,033.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "pscharge", value: 1401 },
charge_name: "personal service charge",
maximum_per_week: 700,
maximum_per_period: "£1,400.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "supcharg", value: 801 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£800.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "supcharg", value: 3471 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£3,466.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "supcharg", value: 1601 },
charge_name: "support charge",
maximum_per_week: 800,
maximum_per_period: "£1,600.00",
}].each do |test_case|
it "does not allow charges outside the range when period is #{test_case[:period][:label]}" do
record.period = test_case[:period][:value]
record[test_case[:charge][:field]] = test_case[:charge][:value]
financial_validator.validate_rent_amount(record)
expect(record.errors[test_case[:charge][:field]])
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_week: test_case[:maximum_per_week], frequency: test_case[:period][:label], letting_type: "supported housing", provider_type: "private registered provider"))
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_period: test_case[:maximum_per_period], frequency: test_case[:period][:label], letting_type: "supported housing", provider_type: "private registered provider"))
end
end
@ -493,62 +493,62 @@ RSpec.describe Validations::FinancialValidations do
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "scharge", value: 501 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£500.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "scharge", value: 2300 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£2,166.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "scharge", value: 1001 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£1,000.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "pscharge", value: 201 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£200.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "pscharge", value: 1000 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£866.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "pscharge", value: 401 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£400.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "supcharg", value: 201 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£200.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "supcharg", value: 1000 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£866.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "supcharg", value: 401 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£400.00",
}].each do |test_case|
it "does not allow charges outside the range when period is #{test_case[:period][:label]}" do
record.period = test_case[:period][:value]
record[test_case[:charge][:field]] = test_case[:charge][:value]
financial_validator.validate_rent_amount(record)
expect(record.errors[test_case[:charge][:field]])
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_week: test_case[:maximum_per_week], frequency: test_case[:period][:label], letting_type: "general needs", provider_type: "local authority"))
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_period: test_case[:maximum_per_period], frequency: test_case[:period][:label], letting_type: "general needs", provider_type: "local authority"))
end
end
@ -605,62 +605,62 @@ RSpec.describe Validations::FinancialValidations do
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "scharge", value: 501 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£500.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "scharge", value: 2300 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£2,166.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "scharge", value: 1001 },
charge_name: "service charge",
maximum_per_week: 500,
maximum_per_period: "£1,000.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "pscharge", value: 201 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£200.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "pscharge", value: 1000 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£866.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "pscharge", value: 401 },
charge_name: "personal service charge",
maximum_per_week: 200,
maximum_per_period: "£400.00",
},
{
period: { label: "weekly for 52 weeks", value: 1 },
charge: { field: "supcharg", value: 201 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£200.00",
},
{
period: { label: "every calendar month", value: 4 },
charge: { field: "supcharg", value: 1000 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£866.00",
},
{
period: { label: "every 2 weeks", value: 2 },
charge: { field: "supcharg", value: 401 },
charge_name: "support charge",
maximum_per_week: 200,
maximum_per_period: "£400.00",
}].each do |test_case|
it "does not allow charges outside the range when period is #{test_case[:period][:label]}" do
record.period = test_case[:period][:value]
record[test_case[:charge][:field]] = test_case[:charge][:value]
financial_validator.validate_rent_amount(record)
expect(record.errors[test_case[:charge][:field]])
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_week: test_case[:maximum_per_week], frequency: test_case[:period][:label], letting_type: "supported housing", provider_type: "local authority"))
.to include(match I18n.t("validations.financial.rent.out_of_range", charge_name: test_case[:charge_name], maximum_per_period: test_case[:maximum_per_period], frequency: test_case[:period][:label], letting_type: "supported housing", provider_type: "local authority"))
end
end

Loading…
Cancel
Save