From d61fa39c00b12d5cecaa544de445ade9e3569d1a Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Thu, 27 Nov 2025 17:30:59 +0000 Subject: [PATCH] CLDC-4095: Add errors on all net income fields (#3116) * CLDC-4095: Ensure errors are added to Q89 dependent fields this ensures that the user is always shown an error if they complete the form in a different order to the question set not doing this leads to the user submitting an answer and nothing happening * CLDC-4095: Update existing tests to check these new fields --- app/models/validations/financial_validations.rb | 2 ++ config/locales/validations/lettings/financial.en.yml | 3 +++ spec/models/validations/financial_validations_spec.rb | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/app/models/validations/financial_validations.rb b/app/models/validations/financial_validations.rb index 7827fbb16..6f135aa39 100644 --- a/app/models/validations/financial_validations.rb +++ b/app/models/validations/financial_validations.rb @@ -20,6 +20,8 @@ module Validations::FinancialValidations is_partner_or_main = relationship == "P" || n == 1 if is_employed && is_partner_or_main && record.benefits == 1 record.errors.add :benefits, I18n.t("validations.lettings.financial.benefits.part_or_full_time") + record.errors.add "ecstat#{n}", I18n.t("validations.lettings.financial.ecstat.part_or_full_time") + record.errors.add "relat#{n}", I18n.t("validations.lettings.financial.relat.part_or_full_time", person_num: n) if n > 1 end end end diff --git a/config/locales/validations/lettings/financial.en.yml b/config/locales/validations/lettings/financial.en.yml index f77e23e17..d91610602 100644 --- a/config/locales/validations/lettings/financial.en.yml +++ b/config/locales/validations/lettings/financial.en.yml @@ -24,6 +24,9 @@ en: ecstat: earnings_over_hard_max: "The household’s income of %{earnings} %{frequency} is too high given the household’s working situation." earnings_under_hard_min: "The household’s income of %{earnings} %{frequency} is too low given the household’s working situation." + part_or_full_time: "Answer cannot be ‘full-time’ or ‘part-time’ if ‘all’ household income is from Universal Credit, state pensions or benefits." + relat: + part_or_full_time: "Tenant %{person_num} cannot be the partner of tenant 1 if ‘all’ household income is from Universal Credit, state pensions or benefits and tenant %{person_num} works full-time or part-time." age: earnings_over_hard_max: "The household’s income of %{earnings} %{frequency} is too high for the number of adults. Change either the household income or the age of the tenants." incfreq: diff --git a/spec/models/validations/financial_validations_spec.rb b/spec/models/validations/financial_validations_spec.rb index e701f12da..7e458ee28 100644 --- a/spec/models/validations/financial_validations_spec.rb +++ b/spec/models/validations/financial_validations_spec.rb @@ -40,6 +40,7 @@ RSpec.describe Validations::FinancialValidations do record.ecstat1 = 1 financial_validator.validate_net_income_uc_proportion(record) expect(record.errors["benefits"]).to include(match I18n.t("validations.lettings.financial.benefits.part_or_full_time")) + expect(record.errors["ecstat1"]).to include(match I18n.t("validations.lettings.financial.ecstat.part_or_full_time")) end it "validates that the lead tenant is not in part time employment" do @@ -47,6 +48,7 @@ RSpec.describe Validations::FinancialValidations do record.ecstat1 = 2 financial_validator.validate_net_income_uc_proportion(record) expect(record.errors["benefits"]).to include(match I18n.t("validations.lettings.financial.benefits.part_or_full_time")) + expect(record.errors["ecstat1"]).to include(match I18n.t("validations.lettings.financial.ecstat.part_or_full_time")) end it "expects that the lead tenant is not in full-time or part-time employment" do @@ -54,6 +56,7 @@ RSpec.describe Validations::FinancialValidations do record.ecstat1 = 4 financial_validator.validate_net_income_uc_proportion(record) expect(record.errors["benefits"]).to be_empty + expect(record.errors["ecstat1"]).to be_empty end it "validates that the tenant’s partner is not in full time employment" do @@ -62,6 +65,8 @@ RSpec.describe Validations::FinancialValidations do record.relat2 = "P" financial_validator.validate_net_income_uc_proportion(record) expect(record.errors["benefits"]).to include(match I18n.t("validations.lettings.financial.benefits.part_or_full_time")) + expect(record.errors["ecstat2"]).to include(match I18n.t("validations.lettings.financial.ecstat.part_or_full_time")) + expect(record.errors["relat2"]).to include(match I18n.t("validations.lettings.financial.relat.part_or_full_time", person_num: 2)) end it "expects that the tenant’s partner is not in full-time or part-time employment" do @@ -70,6 +75,8 @@ RSpec.describe Validations::FinancialValidations do record.relat2 = "P" financial_validator.validate_net_income_uc_proportion(record) expect(record.errors["benefits"]).to be_empty + expect(record.errors["ecstat2"]).to be_empty + expect(record.errors["relat2"]).to be_empty end end end