From 296c8f8aace3180b04027c7281799893d4671d65 Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 22 Feb 2024 15:21:57 +0000 Subject: [PATCH] Update sales validations --- app/models/form/sales/questions/age2.rb | 2 +- .../validations/household_validations.rb | 14 +- .../sales/household_validations.rb | 57 ++- app/views/layouts/application.html.erb | 4 + config/locales/en.yml | 15 +- .../sales/household_validations_spec.rb | 438 ++++++++++++++---- 6 files changed, 406 insertions(+), 124 deletions(-) diff --git a/app/models/form/sales/questions/age2.rb b/app/models/form/sales/questions/age2.rb index 622cbcbb3..82deecbed 100644 --- a/app/models/form/sales/questions/age2.rb +++ b/app/models/form/sales/questions/age2.rb @@ -12,7 +12,7 @@ class Form::Sales::Questions::Age2 < ::Form::Question }] @check_answers_card_number = 2 @max = 110 - @min = 0 + @min = 16 @step = 1 @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index ec27e8414..4883d7102 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -100,7 +100,7 @@ module Validations::HouseholdValidations if record.form.start_year_after_2024? && (age > 19 && tenant_is_child?(relationship)) record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_over_19", person_num:) - record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_19_relat", person_num:) + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_19_relat", person_num:, person: "lead tenant") end end end @@ -119,7 +119,7 @@ module Validations::HouseholdValidations if age_between_16_19 && !(student || economic_status_refused) && child if record.form.start_year_after_2024? - record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student_2024", person_num:) + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student_2024", person_num:, person: "lead tenant") else record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student") record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student") # 1 @@ -129,7 +129,7 @@ module Validations::HouseholdValidations if !age_between_16_19 && student && child if record.form.start_year_after_2024? - record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19_2024", person_num:) + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19_2024", person_num:, person: "lead tenant") else record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19") # 2 record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19") @@ -138,7 +138,7 @@ module Validations::HouseholdValidations end if student && age_between_16_19 && !child && record.form.start_year_after_2024? - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.must_be_child_2024", person_num:) + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.must_be_child_2024", person_num:, person: "lead tenant") end end end @@ -153,9 +153,9 @@ module Validations::HouseholdValidations next unless age > record.age1 - 12 && tenant_is_child?(relationship) - record.errors.add "age1", I18n.t("validations.household.age.age1_child_12_years_younger_2024", person_num:) - record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_12_years_younger_2024", person_num:) - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_12_years_younger_2024", person_num:) + record.errors.add "age1", I18n.t("validations.household.age.age1_child_12_years_younger_2024", person_num:, person: "lead tenant") + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_12_years_younger_2024", person_num:, person: "lead tenant") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_12_years_younger_2024", person_num:, person: "lead tenant") end end diff --git a/app/models/validations/sales/household_validations.rb b/app/models/validations/sales/household_validations.rb index 061c0d8b2..2dbd42087 100644 --- a/app/models/validations/sales/household_validations.rb +++ b/app/models/validations/sales/household_validations.rb @@ -35,8 +35,13 @@ module Validations::Sales::HouseholdValidations record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_under_16_relat_sales", person_num:) record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_under_16_sales", person_num:) elsif age >= 20 && person_is_child?(relationship) - record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_20") - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_over_20") + if record.form.start_year_after_2024? + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_over_19", person_num:) + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_19_relat", person_num:, person: "buyer") + else + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_20") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_over_20") + end end end end @@ -54,20 +59,34 @@ module Validations::Sales::HouseholdValidations child = person_is_child?(relationship) if age_between_16_19 && !(student || economic_status_refused) && child - record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student") - record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student") - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student") + if record.form.start_year_after_2024? + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student_2024", person_num:, person: "buyer") + else + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student") + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student") + end end - next unless !age_between_16_19 && student && child + if !age_between_16_19 && student && child + if record.form.start_year_after_2024? + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19_2024", person_num:, person: "buyer") + else + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19") + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.student_not_16_19") + end + end - record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19") - record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19") - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.student_not_16_19") + if student && age_between_16_19 && !child && record.form.start_year_after_2024? + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.must_be_child_2024", person_num:, person: "buyer") + end end end def validate_person_age_matches_economic_status(record) + return if record.form.start_year_after_2024? + (2..6).each do |person_num| age = record.public_send("age#{person_num}") economic_status = record.public_send("ecstat#{person_num}") @@ -93,9 +112,23 @@ module Validations::Sales::HouseholdValidations next unless person_age > buyer_1_age - 12 && person_is_child?(relationship) - record.errors.add "age1", I18n.t("validations.household.age.child_12_years_younger") - record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_12_years_younger") - record.errors.add "relat#{person_num}", I18n.t("validations.household.age.child_12_years_younger") + if record.form.start_year_after_2024? + record.errors.add "age1", I18n.t("validations.household.age.age1_child_12_years_younger_2024", person_num:, person: "buyer") + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_12_years_younger_2024", person_num:, person: "buyer") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.child_12_years_younger_2024", person_num:, person: "buyer") + else + record.errors.add "age1", I18n.t("validations.household.age.child_12_years_younger") + record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_12_years_younger") + record.errors.add "relat#{person_num}", I18n.t("validations.household.age.child_12_years_younger") + end + end + end + + def validate_buyer_2_not_child(record) + return unless record.form.start_year_after_2024? + + if record.joint_purchase? && person_is_child?(record.relat2) + record.errors.add "relat2", I18n.t("validations.household.relat.buyer_is_a_child") end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index c33dedfd9..1ed5014c3 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,6 +7,10 @@ <%= tag.meta name: "viewport", content: "width=device-width, initial-scale=1" %> <%= tag.meta property: "og:image", content: asset_path("images/govuk-opengraph-image.png") %> <%= tag.meta name: "theme-color", content: "#0b0c0c" %> + <%= favicon_link_tag asset_path("images/favicon.ico"), type: nil, sizes: "48x48" %> + <%= favicon_link_tag asset_path("images/favicon.svg"), type: "image/svg+xml", sizes: "any" %> + <%= favicon_link_tag asset_path("images/govuk-icon-mask.svg"), rel: "mask-icon", color: "#0b0c0c", type: nil %> + <%= favicon_link_tag asset_path("images/govuk-icon-180.png"), rel: "apple-touch-icon", type: nil %> <%= stylesheet_link_tag "application" %> <%= javascript_include_tag "vendor/html5shiv.min.js" %>