From 5b6b1988895a50476d0b94cca61b43aae836cde9 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 25 Oct 2023 10:40:48 +0100 Subject: [PATCH] Update error message --- .../validations/financial_validations.rb | 7 +- config/locales/en.yml | 2 +- .../validations/financial_validations_spec.rb | 80 +++++++++---------- 3 files changed, 46 insertions(+), 43 deletions(-) diff --git a/app/models/validations/financial_validations.rb b/app/models/validations/financial_validations.rb index eeb951db4..879cf8cb5 100644 --- a/app/models/validations/financial_validations.rb +++ b/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 diff --git a/config/locales/en.yml b/config/locales/en.yml index b10fafd93..69a4a8bb9 100644 --- a/config/locales/en.yml +++ b/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: diff --git a/spec/models/validations/financial_validations_spec.rb b/spec/models/validations/financial_validations_spec.rb index d93b45d25..f419137a2 100644 --- a/spec/models/validations/financial_validations_spec.rb +++ b/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