From 2623ca07eb0f0be763a7811dbab2967a8d7ca1da Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Thu, 12 Feb 2026 11:02:51 +0000 Subject: [PATCH 1/8] CLDC-4143: Update gender retirement validations rename functions as the new wording is more related to those that identify as male and any other option --- ...pregnant_household_lead_age_value_check.rb | 8 +- ...gnant_household_lead_hhmemb_value_check.rb | 8 +- ..._in_pregnant_household_lead_value_check.rb | 8 +- ...egnant_household_person_age_value_check.rb | 8 +- ...n_pregnant_household_person_value_check.rb | 8 +- ...range_in_pregnant_household_value_check.rb | 8 +- ...pregnant_household_lead_age_value_check.rb | 6 +- ...gnant_household_lead_hhmemb_value_check.rb | 6 +- ...les_pregnant_household_lead_value_check.rb | 6 +- ...egnant_household_person_age_value_check.rb | 6 +- ...s_pregnant_household_person_value_check.rb | 6 +- ..._females_pregnant_household_value_check.rb | 6 +- app/models/validations/soft_validations.rb | 89 +++++++++++++------ ...t_household_person_age_value_check_spec.rb | 4 +- ...gnant_household_person_value_check_spec.rb | 4 +- .../validations/soft_validations_spec.rb | 10 +-- .../lettings/year2026/row_parser_spec.rb | 14 +-- 17 files changed, 147 insertions(+), 58 deletions(-) diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb index 5b06d6a28..7be7a955e 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValu super(id, hsh, subsection) @id = "females_in_soft_age_range_in_pregnant_household_lead_age_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "female_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], @@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValu end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb index 3e961b283..dc283092f 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembV super(id, hsh, subsection) @id = "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "female_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], @@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembV end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb index af568b039..864a3883d 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCh super @id = "females_in_soft_age_range_in_pregnant_household_lead_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "female_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], @@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCh end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb index ddc8789f9..cb441bf4f 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb @@ -5,7 +5,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeVa @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" @depends_on = [ { - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, "age#{person_index}_known" => 0, }, ] @@ -25,6 +25,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeVa end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb index 099bea5d9..662c31215 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb @@ -6,7 +6,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValue @depends_on = [ { - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, "details_known_#{person_index}" => 0, }, ] @@ -26,6 +26,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValue end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb index 3822ec940..8e8df4df5 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck super @id = "females_in_soft_age_range_in_pregnant_household_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "female_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], @@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + if form.start_year_2026_or_later? + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb index 7e530a9ad..04e2531bb 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb @@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck < ::For end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb index 47ac7493b..ff8ed743d 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb @@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadHhmembValueCheck < :: end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb index edfe2c631..180caf034 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb @@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadValueCheck < ::Form:: end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb index 5e808b853..3eb4edd44 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb @@ -20,6 +20,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonAgeValueCheck < ::F end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb index fb77eec18..96def3c34 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb @@ -20,6 +20,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonValueCheck < ::Form end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb index bce8a87ae..f2d620ee4 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb @@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdValueCheck < ::Form::Page end def interruption_screen_question_ids - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + if form.start_year_2026_or_later? + %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] + else + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] + end end end diff --git a/app/models/validations/soft_validations.rb b/app/models/validations/soft_validations.rb index 35436dc32..53290dbcc 100644 --- a/app/models/validations/soft_validations.rb +++ b/app/models/validations/soft_validations.rb @@ -76,29 +76,11 @@ module Validations::SoftValidations end def all_male_tenants_in_a_pregnant_household? - all_male_tenants_in_the_household? && all_tenants_gender_information_completed? && preg_occ == 1 + all_tenants_gender_information_completed? && all_male_tenants_in_the_household? && preg_occ == 1 end - def female_in_pregnant_household_in_soft_validation_range? - all_tenants_age_and_gender_information_completed? && females_in_the_household? && !females_in_age_range(16, 50) && preg_occ == 1 - end - - def all_tenants_age_and_gender_information_completed? - return false if hhmemb.present? && hhmemb > 8 - - person_count = hhmemb || 8 - - (1..person_count).all? do |n| - public_send("sex#{n}").present? && public_send("age#{n}").present? && details_known_or_lead_tenant?(n) && public_send("age#{n}_known").present? && public_send("age#{n}_known").zero? - end - end - - def all_tenants_gender_information_completed? - person_count = hhmemb || 8 - - (1..person_count).all? do |n| - public_send("sex#{n}").present? && details_known_or_lead_tenant?(n) - end + def non_males_in_pregnant_household_in_soft_validation_range? + all_tenants_age_and_gender_information_completed? && non_males_in_the_household? && !any_non_male_in_expected_pregnancy_age_range(16, 50) && preg_occ == 1 end TWO_YEARS_IN_DAYS = 730 @@ -221,25 +203,54 @@ module Validations::SoftValidations private + def all_tenants_age_and_gender_information_completed? + return false if hhmemb.present? && hhmemb > 8 + return false unless all_tenants_gender_information_completed? + + person_count = hhmemb || 8 + + (1..person_count).all? do |n| + public_send("age#{n}").present? && public_send("age#{n}_known").present? && public_send("age#{n}_known").zero? + end + end + + def all_tenants_gender_information_completed? + return false if hhmemb.present? && hhmemb > 8 + + person_count = hhmemb || 8 + + (1..person_count).all? do |n| + tenant_gender_information_completed?(n) + end + end + + def tenant_gender_information_completed?(tenant_number) + if form.start_year_2026_or_later? + public_send("sexrab#{tenant_number}").present? && public_send("gender_same_as_sex#{tenant_number}").present? && details_known_or_lead_tenant?(tenant_number) + else + public_send("sex#{tenant_number}").present? && details_known_or_lead_tenant?(tenant_number) + end + end + def details_known_or_lead_tenant?(tenant_number) return true if tenant_number == 1 public_send("details_known_#{tenant_number}").zero? end - def females_in_age_range(min, max) + def any_non_male_in_expected_pregnancy_age_range(min, max) person_count = hhmemb || 8 (1..person_count).any? do |n| - public_send("sex#{n}") == "F" && public_send("age#{n}").present? && public_send("age#{n}").between?(min, max) + person_in_expected_pregnancy_age_range(n, min, max) && person_is_non_male(n) end end - def females_in_the_household? + def non_males_in_the_household? person_count = hhmemb || 8 (1..person_count).any? do |n| - public_send("sex#{n}") == "F" || public_send("sex#{n}").nil? + person_is_non_male(n) end end @@ -249,10 +260,36 @@ private person_count = hhmemb || 8 (1..person_count).all? do |n| - public_send("sex#{n}") == "M" + person_is_male(n) + end + end + + def person_is_male(person_number) + if form.start_year_2026_or_later? + sexrab = public_send("sexrab#{person_number}") + gender_same_as_sex = public_send("gender_same_as_sex#{person_number}") + + sexrab == "M" && gender_same_as_sex == 1 + else + public_send("sex#{person_number}") == "M" end end + def person_is_non_male(person_number) + if form.start_year_2026_or_later? + !person_is_male(person_number) + else + # non male wording only came later, originally was specific to female gender + public_send("sex#{person_number}") == "F" + end + end + + def person_in_expected_pregnancy_age_range(person_number, min, max) + age = public_send("age#{person_number}") + + age.between?(min, max) + end + def tenant_is_retired?(economic_status) economic_status == 5 end diff --git a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb index 865fc6fd2..8446bf6f3 100644 --- a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb +++ b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "age2_known" => 0, - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, }, ], ) @@ -62,7 +62,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "age3_known" => 0, - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, }, ], ) diff --git a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb index 8ce2e5451..d088d20ba 100644 --- a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb +++ b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "details_known_2" => 0, - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, }, ], ) @@ -62,7 +62,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "details_known_3" => 0, - "female_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_in_soft_validation_range?" => true, }, ], ) diff --git a/spec/models/validations/soft_validations_spec.rb b/spec/models/validations/soft_validations_spec.rb index 6c39824c5..edeb42048 100644 --- a/spec/models/validations/soft_validations_spec.rb +++ b/spec/models/validations/soft_validations_spec.rb @@ -199,7 +199,7 @@ RSpec.describe Validations::SoftValidations do record.age1 = 18 record.sex1 = "M" record.age1_known = 0 - expect(record.female_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true end end @@ -210,7 +210,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 1 record.age1_known = 0 - expect(record.female_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true end end @@ -221,7 +221,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 1 expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end end @@ -230,7 +230,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 2 expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end end @@ -244,7 +244,7 @@ RSpec.describe Validations::SoftValidations do end record.preg_occ = 1 record.hhmemb = 9 - expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end end end diff --git a/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb index 68768d7d9..23c0d3c57 100644 --- a/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb @@ -2084,18 +2084,22 @@ RSpec.describe BulkUpload::Lettings::Year2026::RowParser do end context "when a soft validation is triggered that relates both to fields that are and are not routed to" do - let(:attributes) { setup_section_params.merge({ field_78: "1", field_43: "M", field_49: "M", field_53: "M" }) } + let(:attributes) { setup_section_params.merge({ field_78: "1", field_130: "M", field_131: "M", field_132: "M", field_138: 1, field_140: 1, field_142: 1 }) } it "adds errors to fields that are routed to" do parser.valid? - expect(parser.errors.where(:field_49, category: :soft_validation)).to be_present - expect(parser.errors.where(:field_53, category: :soft_validation)).to be_present + expect(parser.errors.where(:field_130, category: :soft_validation)).to be_present + expect(parser.errors.where(:field_138, category: :soft_validation)).to be_present + expect(parser.errors.where(:field_131, category: :soft_validation)).to be_present + expect(parser.errors.where(:field_140, category: :soft_validation)).to be_present end it "does not add errors to fields that are not routed to" do parser.valid? - expect(parser.errors.where(:field_57, category: :soft_validation)).not_to be_present - expect(parser.errors.where(:field_61, category: :soft_validation)).not_to be_present + expect(parser.errors.where(:field_133, category: :soft_validation)).not_to be_present + expect(parser.errors.where(:field_144, category: :soft_validation)).not_to be_present + expect(parser.errors.where(:field_134, category: :soft_validation)).not_to be_present + expect(parser.errors.where(:field_146, category: :soft_validation)).not_to be_present end end From 4cac8837c2e1c81897cab3381b5672f21d1ebd80 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Tue, 17 Feb 2026 17:36:16 +0000 Subject: [PATCH 2/8] CLDC-4143: Add 2026 tests --- .../validations/soft_validations_spec.rb | 330 ++++++++++++++---- 1 file changed, 255 insertions(+), 75 deletions(-) diff --git a/spec/models/validations/soft_validations_spec.rb b/spec/models/validations/soft_validations_spec.rb index edeb42048..4e582bde9 100644 --- a/spec/models/validations/soft_validations_spec.rb +++ b/spec/models/validations/soft_validations_spec.rb @@ -1,8 +1,11 @@ require "rails_helper" RSpec.describe Validations::SoftValidations do - let(:organisation) { FactoryBot.build(:organisation, provider_type: "PRP", id: 123) } - let(:record) { FactoryBot.build(:lettings_log, owning_organisation: organisation) } + include CollectionTimeHelper + + let(:organisation) { build(:organisation, provider_type: "PRP", id: 123) } + let(:start_year) { current_collection_start_year } + let(:record) { build(:lettings_log, owning_organisation: organisation, startdate: collection_start_date_for_year(start_year)) } describe "rent min max validations" do before do @@ -153,98 +156,275 @@ RSpec.describe Validations::SoftValidations do end describe "pregnancy soft validations" do - context "when all tenants are male" do - it "shows the interruption screen" do - record.age1 = 43 - record.sex1 = "M" - record.preg_occ = 1 - record.hhmemb = 1 - record.age1_known = 0 - expect(record.all_male_tenants_in_a_pregnant_household?).to be true + context "when 2025" do + let(:start_year) { 2025 } + + context "when all tenants are male" do + it "shows the interruption screen" do + record.age1 = 43 + record.sex1 = "M" + record.preg_occ = 1 + record.hhmemb = 1 + record.age1_known = 0 + expect(record.all_male_tenants_in_a_pregnant_household?).to be true + end end - end - context "when there all tenants are male and age of tenants is unknown" do - it "shows the interruption screen" do - record.sex1 = "M" - record.preg_occ = 1 - record.hhmemb = 1 - record.age1_known = 1 - expect(record.all_male_tenants_in_a_pregnant_household?).to be true + context "when there all tenants are male and age of tenants is unknown" do + it "shows the interruption screen" do + record.sex1 = "M" + record.preg_occ = 1 + record.hhmemb = 1 + record.age1_known = 1 + expect(record.all_male_tenants_in_a_pregnant_household?).to be true + end end - end - context "when all tenants are male and household members are over 8" do - it "does not show the interruption screen" do - (1..8).each do |n| - record.send("sex#{n}=", "M") - record.send("age#{n}=", 30) - record.send("age#{n}_known=", 0) - record.send("details_known_#{n}=", 0) unless n == 1 + context "when all tenants are male and household members are over 8" do + it "does not show the interruption screen" do + (1..8).each do |n| + record.send("sex#{n}=", "M") + record.send("age#{n}=", 30) + record.send("age#{n}_known=", 0) + record.send("details_known_#{n}=", 0) unless n == 1 + end + record.preg_occ = 1 + record.hhmemb = 9 + expect(record.all_male_tenants_in_a_pregnant_household?).to be false end - record.preg_occ = 1 - record.hhmemb = 9 - expect(record.all_male_tenants_in_a_pregnant_household?).to be false end - end - context "when female tenants are under 16" do - it "shows the interruption screen" do - record.age2 = 14 - record.sex2 = "F" - record.preg_occ = 1 - record.hhmemb = 2 - record.details_known_2 = 0 - record.age2_known = 0 - record.age1 = 18 - record.sex1 = "M" - record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + context "when female tenants are under 16" do + it "shows the interruption screen" do + record.age2 = 14 + record.sex2 = "F" + record.preg_occ = 1 + record.hhmemb = 2 + record.details_known_2 = 0 + record.age2_known = 0 + record.age1 = 18 + record.sex1 = "M" + record.age1_known = 0 + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end end - end - context "when female tenants are over 50" do - it "shows the interruption screen" do - record.age1 = 54 - record.sex1 = "F" - record.preg_occ = 1 - record.hhmemb = 1 - record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + context "when female tenants are over 50" do + it "shows the interruption screen" do + record.age1 = 54 + record.sex1 = "F" + record.preg_occ = 1 + record.hhmemb = 1 + record.age1_known = 0 + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end + end + + context "when non-binary tenants are under 16" do + it "does not show the interruption screen" do + record.age2 = 14 + record.sex2 = "X" + record.preg_occ = 1 + record.hhmemb = 2 + record.details_known_2 = 0 + record.age2_known = 0 + record.age1 = 18 + record.sex1 = "M" + record.age1_known = 0 + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when non-binary tenants are over 50" do + it "does not show the interruption screen" do + record.age1 = 54 + record.sex1 = "X" + record.preg_occ = 1 + record.hhmemb = 1 + record.age1_known = 0 + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when female tenants are outside of soft validation ranges" do + it "does not show the interruption screen" do + record.age1 = 44 + record.sex1 = "F" + record.preg_occ = 1 + record.hhmemb = 1 + expect(record.all_male_tenants_in_a_pregnant_household?).to be false + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when the information about the tenants is not given" do + it "does not show the interruption screen" do + record.preg_occ = 1 + record.hhmemb = 2 + expect(record.all_male_tenants_in_a_pregnant_household?).to be false + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when number of household members is over 8" do + it "does not show the interruption screen" do + (1..8).each do |n| + record.send("sex#{n}=", "F") + record.send("age#{n}=", 50) + record.send("age#{n}_known=", 0) + record.send("details_known_#{n}=", 0) unless n == 1 + end + record.preg_occ = 1 + record.hhmemb = 9 + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end end end - context "when female tenants are outside of soft validation ranges" do - it "does not show the interruption screen" do - record.age1 = 44 - record.sex1 = "F" + context "when 2026" do + let(:start_year) { 2026 } + + before do + record.age1 = 43 + record.age1_known = 0 record.preg_occ = 1 record.hhmemb = 1 - expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end - end - context "when the information about the tenants is not given" do - it "does not show the interruption screen" do - record.preg_occ = 1 - record.hhmemb = 2 - expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + context "when all tenants are male" do + before do + record.sexrab1 = "M" + record.gender_same_as_sex1 = 1 + end + + it "shows the interruption screen" do + expect(record.all_male_tenants_in_a_pregnant_household?).to be true + end end - end - context "when number of household members is over 8" do - it "does not show the interruption screen" do - (1..8).each do |n| - record.send("sex#{n}=", "F") - record.send("age#{n}=", 50) - record.send("age#{n}_known=", 0) - record.send("details_known_#{n}=", 0) unless n == 1 + context "when there all tenants are male and age of tenants is unknown" do + before do + record.sexrab1 = "M" + record.gender_same_as_sex1 = 1 + record.age1_known = 1 + end + + it "shows the interruption screen" do + expect(record.all_male_tenants_in_a_pregnant_household?).to be true + end + end + + context "when all tenants are male and household members are over 8" do + before do + (1..8).each do |n| + record.send("sexrab#{n}=", "M") + record.send("gender_same_as_sex#{n}=", 1) + record.send("age#{n}=", 30) + record.send("age#{n}_known=", 0) + record.send("details_known_#{n}=", 0) unless n == 1 + end + record.preg_occ = 1 + record.hhmemb = 9 + end + + it "does not show the interruption screen" do + expect(record.all_male_tenants_in_a_pregnant_household?).to be false + end + end + + context "when female tenants are under 16" do + before do + record.age1 = 12 + record.sexrab1 = "F" + record.gender_same_as_sex1 = 1 + end + + it "shows the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end + end + + context "when female tenants are over 50" do + before do + record.age1 = 60 + record.sexrab1 = "F" + record.gender_same_as_sex1 = 1 + end + + it "shows the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end + end + + context "when non binary tenants are under 16" do + before do + record.age1 = 12 + record.sexrab1 = "M" + record.gender_same_as_sex1 = 2 + record.gender_description1 = "Non-binary" + end + + it "shows the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end + end + + context "when non binary tenants are over 50" do + before do + record.age1 = 60 + record.sexrab1 = "M" + record.gender_same_as_sex1 = 2 + record.gender_description1 = "Non-binary" + end + + it "shows the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + end + end + + context "when female tenants are outside of soft validation ranges" do + before do + record.age1 = 30 + record.sexrab1 = "F" + record.gender_same_as_sex1 = 1 + end + + it "does not show the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when the information about the tenants is not given" do + before do + record.age1 = nil + record.age1_known = nil + record.sexrab1 = nil + record.gender_same_as_sex1 = nil + record.preg_occ = 1 + record.hhmemb = 1 + end + + it "does not show the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + end + end + + context "when number of household members is over 8" do + before do + (1..8).each do |n| + record.send("sexrab#{n}=", "F") + record.send("gender_same_as_sex#{n}=", 1) + record.send("age#{n}=", 30) + record.send("age#{n}_known=", 0) + record.send("details_known_#{n}=", 0) unless n == 1 + end + record.preg_occ = 1 + record.hhmemb = 9 + end + + it "does not show the interruption screen" do + expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end - record.preg_occ = 1 - record.hhmemb = 9 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false end end end From 37d44eb404289fb1dd0db2d7bf9e62a4724550e2 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Wed, 18 Feb 2026 09:27:17 +0000 Subject: [PATCH 3/8] CLDC-4143: Update legacy json files causes issues with some old tests --- config/forms/2021_2022.json | 36 ++++++++++++++++++------------------ config/forms/2022_2023.json | 36 ++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index ac615b0e2..db8beb73c 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -1213,7 +1213,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -1355,7 +1355,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -1476,7 +1476,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -2135,7 +2135,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age2_known": 0 } ], @@ -2258,7 +2258,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_2": 0 } ], @@ -2670,7 +2670,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age3_known": 0 } ], @@ -2793,7 +2793,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_3": 0 } ], @@ -3202,7 +3202,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age4_known": 0 } ], @@ -3325,7 +3325,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_4": 0 } ], @@ -3731,7 +3731,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age5_known": 0 } ], @@ -3854,7 +3854,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_5": 0 } ], @@ -4257,7 +4257,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age6_known": 0 } ], @@ -4380,7 +4380,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_6": 0 } ], @@ -4780,7 +4780,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age7_known": 0 } ], @@ -4903,7 +4903,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_7": 0 } ], @@ -5300,7 +5300,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age8_known": 0 } ], @@ -5423,7 +5423,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_8": 0 } ], @@ -5837,7 +5837,7 @@ "females_in_soft_age_range_in_pregnant_household_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json index 7d6f44b20..7ed5d7763 100644 --- a/config/forms/2022_2023.json +++ b/config/forms/2022_2023.json @@ -1254,7 +1254,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -1426,7 +1426,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -1577,7 +1577,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { @@ -2218,7 +2218,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age2_known": 0 } ], @@ -2371,7 +2371,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_2": 0 } ], @@ -2801,7 +2801,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age3_known": 0 } ], @@ -2954,7 +2954,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_3": 0 } ], @@ -3381,7 +3381,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age4_known": 0 } ], @@ -3534,7 +3534,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_4": 0 } ], @@ -3958,7 +3958,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age5_known": 0 } ], @@ -4111,7 +4111,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_5": 0 } ], @@ -4532,7 +4532,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age6_known": 0 } ], @@ -4685,7 +4685,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_6": 0 } ], @@ -5103,7 +5103,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age7_known": 0 } ], @@ -5256,7 +5256,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_7": 0 } ], @@ -5671,7 +5671,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_age_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "age8_known": 0 } ], @@ -5824,7 +5824,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_in_soft_validation_range?": true, "details_known_8": 0 } ], @@ -6259,7 +6259,7 @@ "females_in_soft_age_range_in_pregnant_household_value_check": { "depends_on": [ { - "female_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_in_soft_validation_range?": true } ], "title_text": { From fd83694e5a862e0b7106770e225f0d39faec0485 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Wed, 18 Feb 2026 10:00:02 +0000 Subject: [PATCH 4/8] CLDC-4143: Add error mappings for gender fields --- .../bulk_upload/lettings/year2026/row_parser.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/services/bulk_upload/lettings/year2026/row_parser.rb b/app/services/bulk_upload/lettings/year2026/row_parser.rb index 80f31e0f7..5930f75fd 100644 --- a/app/services/bulk_upload/lettings/year2026/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2026/row_parser.rb @@ -1263,6 +1263,22 @@ private sexrab6: %i[field_135], sexrab7: %i[field_136], sexrab8: %i[field_137], + gender_same_as_sex1: %i[field_138], + gender_same_as_sex2: %i[field_140], + gender_same_as_sex3: %i[field_142], + gender_same_as_sex4: %i[field_144], + gender_same_as_sex5: %i[field_146], + gender_same_as_sex6: %i[field_148], + gender_same_as_sex7: %i[field_150], + gender_same_as_sex8: %i[field_152], + gender_description1: %i[field_139], + gender_description2: %i[field_141], + gender_description3: %i[field_143], + gender_description4: %i[field_145], + gender_description5: %i[field_147], + gender_description6: %i[field_149], + gender_description7: %i[field_151], + gender_description8: %i[field_153], }.compact end From 8444e3084f097947afabf2bf964c409a5a9bdf4b Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 19 Feb 2026 14:42:33 +0000 Subject: [PATCH 5/8] CLDC-4143: Add new gender age retirement soft validation replaces the many check pages from previous years with a single one shows if either of the previous ones would show has agreed wording on ticket --- ...pregnant_household_lead_age_value_check.rb | 6 +---- ...gnant_household_lead_hhmemb_value_check.rb | 6 +---- ..._in_pregnant_household_lead_value_check.rb | 6 +---- ...egnant_household_person_age_value_check.rb | 6 +---- ...n_pregnant_household_person_value_check.rb | 6 +---- ...range_in_pregnant_household_value_check.rb | 6 +---- ...pregnant_household_lead_age_value_check.rb | 6 +---- ...gnant_household_lead_hhmemb_value_check.rb | 6 +---- ...les_pregnant_household_lead_value_check.rb | 6 +---- ...egnant_household_person_age_value_check.rb | 6 +---- ...s_pregnant_household_person_value_check.rb | 6 +---- ..._females_pregnant_household_value_check.rb | 6 +---- ...hold_member_likely_to_be_pregnant_check.rb | 24 ++++++++++++++++++ .../subsections/household_characteristics.rb | 25 +++++++++++-------- .../lettings/subsections/household_needs.rb | 5 ++-- app/models/validations/soft_validations.rb | 4 +++ .../2026/lettings/soft_validations.en.yml | 4 +-- 17 files changed, 60 insertions(+), 74 deletions(-) create mode 100644 app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb index 7be7a955e..806758b54 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValu end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb index dc283092f..e33882175 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembV end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb index 864a3883d..189fcf300 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCh end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb index cb441bf4f..ca364a141 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb @@ -25,10 +25,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeVa end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb index 662c31215..6b1cb270e 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb @@ -26,10 +26,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValue end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb index 8e8df4df5..286942519 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb index 04e2531bb..7e530a9ad 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck < ::For end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb index ff8ed743d..47ac7493b 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadHhmembValueCheck < :: end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb index 180caf034..edfe2c631 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadValueCheck < ::Form:: end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb index 3eb4edd44..5e808b853 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb @@ -20,10 +20,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonAgeValueCheck < ::F end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb index 96def3c34..fb77eec18 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb @@ -20,10 +20,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonValueCheck < ::Form end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb b/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb index f2d620ee4..bce8a87ae 100644 --- a/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb +++ b/app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb @@ -19,10 +19,6 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdValueCheck < ::Form::Page end def interruption_screen_question_ids - if form.start_year_2026_or_later? - %w[preg_occ sexrab1 gender_same_as_sex1 sexrab2 gender_same_as_sex2 sexrab3 gender_same_as_sex3 sexrab4 gender_same_as_sex4 sexrab5 gender_same_as_sex5 sexrab6 gender_same_as_sex6 sexrab7 gender_same_as_sex7 sexrab8 gender_same_as_sex8] - else - %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] - end + %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8] end end diff --git a/app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb b/app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb new file mode 100644 index 000000000..cefb98ceb --- /dev/null +++ b/app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb @@ -0,0 +1,24 @@ +class Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck < ::Form::Page + def initialize(id, hsh, subsection, person_index: 0) + super(id, hsh, subsection) + @copy_key = "lettings.soft_validations.pregnancy_value_check.no_household_member_likely_to_be_pregnant_check" + @depends_on = [{ "no_household_member_likely_to_be_pregnant?" => true }] + @title_text = { + "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", + "arguments" => [], + } + @informative_text = { + "translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text", + "arguments" => [], + } + @person_index = person_index + end + + def questions + @questions ||= [Form::Lettings::Questions::PregnancyValueCheck.new(nil, nil, self, person_index: @person_index)] + end + + def interruption_screen_question_ids + %w[preg_occ age1 sexrab1 gender_same_as_sex1 age2 sexrab2 gender_same_as_sex2 age3 sexrab3 gender_same_as_sex3 age4 sexrab4 gender_same_as_sex4 age5 sexrab5 gender_same_as_sex5 age6 sexrab6 gender_same_as_sex6 age7 sexrab7 gender_same_as_sex7 age8 sexrab8 gender_same_as_sex8] + end +end diff --git a/app/models/form/lettings/subsections/household_characteristics.rb b/app/models/form/lettings/subsections/household_characteristics.rb index d528e3772..ab8e639bc 100644 --- a/app/models/form/lettings/subsections/household_characteristics.rb +++ b/app/models/form/lettings/subsections/household_characteristics.rb @@ -10,18 +10,21 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection @pages ||= [ (Form::Lettings::Pages::Declaration.new(nil, nil, self) unless form.start_year_2024_or_later?), Form::Lettings::Pages::HouseholdMembers.new(nil, nil, self), - Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadHhmembValueCheck.new(nil, nil, self), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembValueCheck.new(nil, nil, self), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadHhmembValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_hhmemb_check", nil, self) if form.start_year_2026_or_later?), Form::Lettings::Pages::LeadTenantAge.new(nil, nil, self), - Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_lead_age_check", nil, self) if form.start_year_2026_or_later?), Form::Lettings::Pages::LeadTenantUnderRetirementValueCheck.new("age_lead_tenant_under_retirement_value_check", nil, self), Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new("age_lead_tenant_over_retirement_value_check", nil, self), (Form::Lettings::Pages::LeadTenantSexRegisteredAtBirth.new(nil, nil, self) if form.start_year_2026_or_later?), (Form::Lettings::Pages::LeadTenantGenderSameAsSex.new(nil, nil, self) if form.start_year_2026_or_later?), Form::Lettings::Pages::LeadTenantGenderIdentity.new(nil, nil, self), - Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadValueCheck.new(nil, nil, self), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCheck.new(nil, nil, self), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_lead_check", nil, self, person_index: 1) if form.start_year_2026_or_later?), Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new("gender_lead_tenant_over_retirement_value_check", nil, self), Form::Lettings::Pages::LeadTenantEthnicGroup.new(nil, nil, self), Form::Lettings::Pages::LeadTenantEthnicBackgroundArab.new(nil, nil, self), @@ -52,16 +55,18 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_#{person_index}_partner_under_16_value_check", nil, self, person_index:) if form.start_year_2024_or_later? && !form.start_year_2026_or_later?), (Form::Lettings::Pages::MultiplePartnersValueCheck.new("relationship_#{person_index}_multiple_partners_value_check", nil, self, person_index:) if form.start_year_2024_or_later?), (Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index:) unless form.start_year_2026_or_later?), - Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonAgeValueCheck.new(nil, nil, self, person_index:), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeValueCheck.new(nil, nil, self, person_index:), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonAgeValueCheck.new(nil, nil, self, person_index:) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeValueCheck.new(nil, nil, self, person_index:) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_person_age_#{person_index}_check", nil, self, person_index:) if form.start_year_2026_or_later?), Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("age_#{person_index}_under_retirement_value_check", nil, self, person_index:), Form::Lettings::Pages::PersonOverRetirementValueCheck.new("age_#{person_index}_over_retirement_value_check", nil, self, person_index:), (Form::Lettings::Pages::PartnerUnder16ValueCheck.new("age_#{person_index}_partner_under_16_value_check", nil, self, person_index:) if form.start_year_2024_or_later? && !form.start_year_2026_or_later?), (Form::Lettings::Pages::PersonSexRegisteredAtBirth.new(nil, nil, self, person_index:) if form.start_year_2026_or_later?), (Form::Lettings::Pages::PersonGenderSameAsSex.new(nil, nil, self, person_index:) if form.start_year_2026_or_later?), Form::Lettings::Pages::PersonGenderIdentity.new(nil, nil, self, person_index:), - Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonValueCheck.new(nil, nil, self, person_index:), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValueCheck.new(nil, nil, self, person_index:), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonValueCheck.new(nil, nil, self, person_index:) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValueCheck.new(nil, nil, self, person_index:) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_person_#{person_index}_check", nil, self, person_index:) if form.start_year_2026_or_later?), Form::Lettings::Pages::PersonOverRetirementValueCheck.new("gender_#{person_index}_over_retirement_value_check", nil, self, person_index:), Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index:), Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_#{person_index}_under_retirement_value_check", nil, self, person_index:), diff --git a/app/models/form/lettings/subsections/household_needs.rb b/app/models/form/lettings/subsections/household_needs.rb index e0502386b..4f6414d18 100644 --- a/app/models/form/lettings/subsections/household_needs.rb +++ b/app/models/form/lettings/subsections/household_needs.rb @@ -12,8 +12,9 @@ class Form::Lettings::Subsections::HouseholdNeeds < ::Form::Subsection Form::Lettings::Pages::ArmedForcesServing.new(nil, nil, self), Form::Lettings::Pages::ArmedForcesInjured.new(nil, nil, self), Form::Lettings::Pages::Pregnant.new("pregnant", nil, self), - Form::Lettings::Pages::NoFemalesPregnantHouseholdValueCheck.new(nil, nil, self), - Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck.new(nil, nil, self), + (Form::Lettings::Pages::NoFemalesPregnantHouseholdValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), + (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_check", nil, self) if form.start_year_2026_or_later?), Form::Lettings::Pages::AccessNeedsExist.new("access_needs_exist", nil, self), Form::Lettings::Pages::TypeOfAccessNeeds.new(nil, nil, self), Form::Lettings::Pages::HealthConditions.new("health_conditions", nil, self), diff --git a/app/models/validations/soft_validations.rb b/app/models/validations/soft_validations.rb index 53290dbcc..065da7d93 100644 --- a/app/models/validations/soft_validations.rb +++ b/app/models/validations/soft_validations.rb @@ -75,6 +75,10 @@ module Validations::SoftValidations end end + def no_household_member_likely_to_be_pregnant? + all_male_tenants_in_a_pregnant_household? || non_males_in_pregnant_household_in_soft_validation_range? + end + def all_male_tenants_in_a_pregnant_household? all_tenants_gender_information_completed? && all_male_tenants_in_the_household? && preg_occ == 1 end diff --git a/config/locales/forms/2026/lettings/soft_validations.en.yml b/config/locales/forms/2026/lettings/soft_validations.en.yml index 5a1d7d1a3..74e7af46f 100644 --- a/config/locales/forms/2026/lettings/soft_validations.en.yml +++ b/config/locales/forms/2026/lettings/soft_validations.en.yml @@ -12,14 +12,14 @@ en: question_text: "Are you sure this is correct?" title_text: "You told us somebody in the household is pregnant." informative_text: "You also told us that all the tenants living at the property are male." - females_in_soft_age_range_in_pregnant_household_value_check: + no_household_member_likely_to_be_pregnant_check: page_header: "" check_answer_label: "Pregnancy confirmation" check_answer_prompt: "Confirm pregnancy status" hint_text: "" question_text: "Are you sure this is correct?" title_text: "You told us somebody in the household is pregnant." - informative_text: "You also told us that any female tenants living at the property are in the following age ranges:
  • under 16 years old
  • over 50 years old
" + informative_text: "Your answers for the age, sex and gender of each household member suggest there is no household member who is likely to be pregnant." no_retirement_value_check: page_header: "" From ca32b7877be515f4b62eac9673b60bf5bec7b0be Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 19 Feb 2026 14:45:52 +0000 Subject: [PATCH 6/8] fixup! CLDC-4143: Update gender retirement validations improve gender comment wording --- app/models/validations/soft_validations.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/validations/soft_validations.rb b/app/models/validations/soft_validations.rb index 065da7d93..81e403846 100644 --- a/app/models/validations/soft_validations.rb +++ b/app/models/validations/soft_validations.rb @@ -283,7 +283,7 @@ private if form.start_year_2026_or_later? !person_is_male(person_number) else - # non male wording only came later, originally was specific to female gender + # the "non-male" wording was introduced in the 26/27 collection year, before that this behavior was limited to female gender only public_send("sex#{person_number}") == "F" end end From 85b3a13d4cba402a31977b36c38317db2f2f03f2 Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 19 Feb 2026 14:56:00 +0000 Subject: [PATCH 7/8] CLDC-4143: Update non males validation name reference to 'soft validation' we found confusing --- ...pregnant_household_lead_age_value_check.rb | 2 +- ...gnant_household_lead_hhmemb_value_check.rb | 2 +- ..._in_pregnant_household_lead_value_check.rb | 2 +- ...egnant_household_person_age_value_check.rb | 2 +- ...n_pregnant_household_person_value_check.rb | 2 +- ...range_in_pregnant_household_value_check.rb | 2 +- app/models/validations/soft_validations.rb | 4 +-- config/forms/2021_2022.json | 36 +++++++++---------- config/forms/2022_2023.json | 36 +++++++++---------- ...t_household_person_age_value_check_spec.rb | 4 +-- ...gnant_household_person_value_check_spec.rb | 4 +-- .../validations/soft_validations_spec.rb | 28 +++++++-------- 12 files changed, 62 insertions(+), 62 deletions(-) diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb index 806758b54..24f836d04 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValu super(id, hsh, subsection) @id = "females_in_soft_age_range_in_pregnant_household_lead_age_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_not_in_pregnancy_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb index e33882175..c786afe56 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembV super(id, hsh, subsection) @id = "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_not_in_pregnancy_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb index 189fcf300..bb3670c74 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCh super @id = "females_in_soft_age_range_in_pregnant_household_lead_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_not_in_pregnancy_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb index ca364a141..cfd035ac3 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb @@ -5,7 +5,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeVa @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" @depends_on = [ { - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, "age#{person_index}_known" => 0, }, ] diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb index 6b1cb270e..de1fb5fc9 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb @@ -6,7 +6,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValue @depends_on = [ { - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, "details_known_#{person_index}" => 0, }, ] diff --git a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb index 286942519..66603753e 100644 --- a/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb +++ b/app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb @@ -3,7 +3,7 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck super @id = "females_in_soft_age_range_in_pregnant_household_value_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check" - @depends_on = [{ "non_males_in_pregnant_household_in_soft_validation_range?" => true }] + @depends_on = [{ "non_males_in_pregnant_household_not_in_pregnancy_range?" => true }] @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "arguments" => [], diff --git a/app/models/validations/soft_validations.rb b/app/models/validations/soft_validations.rb index 81e403846..662aa9af6 100644 --- a/app/models/validations/soft_validations.rb +++ b/app/models/validations/soft_validations.rb @@ -76,14 +76,14 @@ module Validations::SoftValidations end def no_household_member_likely_to_be_pregnant? - all_male_tenants_in_a_pregnant_household? || non_males_in_pregnant_household_in_soft_validation_range? + all_male_tenants_in_a_pregnant_household? || non_males_in_pregnant_household_not_in_pregnancy_range? end def all_male_tenants_in_a_pregnant_household? all_tenants_gender_information_completed? && all_male_tenants_in_the_household? && preg_occ == 1 end - def non_males_in_pregnant_household_in_soft_validation_range? + def non_males_in_pregnant_household_not_in_pregnancy_range? all_tenants_age_and_gender_information_completed? && non_males_in_the_household? && !any_non_male_in_expected_pregnancy_age_range(16, 50) && preg_occ == 1 end diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index db8beb73c..9ed728cda 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -1213,7 +1213,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -1355,7 +1355,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -1476,7 +1476,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -2135,7 +2135,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age2_known": 0 } ], @@ -2258,7 +2258,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_2": 0 } ], @@ -2670,7 +2670,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age3_known": 0 } ], @@ -2793,7 +2793,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_3": 0 } ], @@ -3202,7 +3202,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age4_known": 0 } ], @@ -3325,7 +3325,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_4": 0 } ], @@ -3731,7 +3731,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age5_known": 0 } ], @@ -3854,7 +3854,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_5": 0 } ], @@ -4257,7 +4257,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age6_known": 0 } ], @@ -4380,7 +4380,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_6": 0 } ], @@ -4780,7 +4780,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age7_known": 0 } ], @@ -4903,7 +4903,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_7": 0 } ], @@ -5300,7 +5300,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age8_known": 0 } ], @@ -5423,7 +5423,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_8": 0 } ], @@ -5837,7 +5837,7 @@ "females_in_soft_age_range_in_pregnant_household_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json index 7ed5d7763..0fa982dd4 100644 --- a/config/forms/2022_2023.json +++ b/config/forms/2022_2023.json @@ -1254,7 +1254,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -1426,7 +1426,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -1577,7 +1577,7 @@ "females_in_soft_age_range_in_pregnant_household_lead_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { @@ -2218,7 +2218,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age2_known": 0 } ], @@ -2371,7 +2371,7 @@ "females_in_soft_age_range_in_pregnant_household_person_2_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_2": 0 } ], @@ -2801,7 +2801,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age3_known": 0 } ], @@ -2954,7 +2954,7 @@ "females_in_soft_age_range_in_pregnant_household_person_3_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_3": 0 } ], @@ -3381,7 +3381,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age4_known": 0 } ], @@ -3534,7 +3534,7 @@ "females_in_soft_age_range_in_pregnant_household_person_4_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_4": 0 } ], @@ -3958,7 +3958,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age5_known": 0 } ], @@ -4111,7 +4111,7 @@ "females_in_soft_age_range_in_pregnant_household_person_5_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_5": 0 } ], @@ -4532,7 +4532,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age6_known": 0 } ], @@ -4685,7 +4685,7 @@ "females_in_soft_age_range_in_pregnant_household_person_6_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_6": 0 } ], @@ -5103,7 +5103,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age7_known": 0 } ], @@ -5256,7 +5256,7 @@ "females_in_soft_age_range_in_pregnant_household_person_7_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_7": 0 } ], @@ -5671,7 +5671,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_age_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "age8_known": 0 } ], @@ -5824,7 +5824,7 @@ "females_in_soft_age_range_in_pregnant_household_person_8_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true, + "non_males_in_pregnant_household_not_in_pregnancy_range?": true, "details_known_8": 0 } ], @@ -6259,7 +6259,7 @@ "females_in_soft_age_range_in_pregnant_household_value_check": { "depends_on": [ { - "non_males_in_pregnant_household_in_soft_validation_range?": true + "non_males_in_pregnant_household_not_in_pregnancy_range?": true } ], "title_text": { diff --git a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb index 8446bf6f3..7432b0bda 100644 --- a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb +++ b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "age2_known" => 0, - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, }, ], ) @@ -62,7 +62,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "age3_known" => 0, - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, }, ], ) diff --git a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb index d088d20ba..96570ee09 100644 --- a/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb +++ b/spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "details_known_2" => 0, - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, }, ], ) @@ -62,7 +62,7 @@ RSpec.describe Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPe [ { "details_known_3" => 0, - "non_males_in_pregnant_household_in_soft_validation_range?" => true, + "non_males_in_pregnant_household_not_in_pregnancy_range?" => true, }, ], ) diff --git a/spec/models/validations/soft_validations_spec.rb b/spec/models/validations/soft_validations_spec.rb index 4e582bde9..02b383acf 100644 --- a/spec/models/validations/soft_validations_spec.rb +++ b/spec/models/validations/soft_validations_spec.rb @@ -205,7 +205,7 @@ RSpec.describe Validations::SoftValidations do record.age1 = 18 record.sex1 = "M" record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -216,7 +216,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 1 record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -231,7 +231,7 @@ RSpec.describe Validations::SoftValidations do record.age1 = 18 record.sex1 = "M" record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -242,7 +242,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 1 record.age1_known = 0 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -253,7 +253,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 1 expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -262,7 +262,7 @@ RSpec.describe Validations::SoftValidations do record.preg_occ = 1 record.hhmemb = 2 expect(record.all_male_tenants_in_a_pregnant_household?).to be false - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -276,7 +276,7 @@ RSpec.describe Validations::SoftValidations do end record.preg_occ = 1 record.hhmemb = 9 - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end end @@ -340,7 +340,7 @@ RSpec.describe Validations::SoftValidations do end it "shows the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -352,7 +352,7 @@ RSpec.describe Validations::SoftValidations do end it "shows the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -365,7 +365,7 @@ RSpec.describe Validations::SoftValidations do end it "shows the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -378,7 +378,7 @@ RSpec.describe Validations::SoftValidations do end it "shows the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be true + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be true end end @@ -390,7 +390,7 @@ RSpec.describe Validations::SoftValidations do end it "does not show the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -405,7 +405,7 @@ RSpec.describe Validations::SoftValidations do end it "does not show the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end @@ -423,7 +423,7 @@ RSpec.describe Validations::SoftValidations do end it "does not show the interruption screen" do - expect(record.non_males_in_pregnant_household_in_soft_validation_range?).to be false + expect(record.non_males_in_pregnant_household_not_in_pregnancy_range?).to be false end end end From ae17cf958aad801493516fcfda4dbc972a8c3c3d Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 19 Feb 2026 15:21:01 +0000 Subject: [PATCH 8/8] fixup! CLDC-4143: Add new gender age retirement soft validation update subsection specs --- .../household_characteristics_spec.rb | 51 +++++++------------ .../subsections/household_needs_spec.rb | 3 +- 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/spec/models/form/lettings/subsections/household_characteristics_spec.rb b/spec/models/form/lettings/subsections/household_characteristics_spec.rb index 11df2b8d7..c33d271c5 100644 --- a/spec/models/form/lettings/subsections/household_characteristics_spec.rb +++ b/spec/models/form/lettings/subsections/household_characteristics_spec.rb @@ -339,18 +339,15 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod expect(household_characteristics.pages.map(&:id)).to eq( %w[ household_members - no_females_pregnant_household_lead_hhmemb_value_check - females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check + no_household_member_likely_to_be_pregnant_hhmemb_check lead_tenant_age - no_females_pregnant_household_lead_age_value_check - females_in_soft_age_range_in_pregnant_household_lead_age_value_check + no_household_member_likely_to_be_pregnant_lead_age_check age_lead_tenant_under_retirement_value_check age_lead_tenant_over_retirement_value_check lead_tenant_sex_registered_at_birth lead_tenant_gender_same_as_sex lead_tenant_gender_identity - no_females_pregnant_household_lead_value_check - females_in_soft_age_range_in_pregnant_household_lead_value_check + no_household_member_likely_to_be_pregnant_lead_check gender_lead_tenant_over_retirement_value_check lead_tenant_ethnic_group lead_tenant_ethnic_background_arab @@ -367,15 +364,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_2_age person_2_lead_partner relationship_2_multiple_partners_value_check - no_females_pregnant_household_person_2_age_value_check - females_in_soft_age_range_in_pregnant_household_person_2_age_value_check + no_household_member_likely_to_be_pregnant_person_age_2_check age_2_under_retirement_value_check age_2_over_retirement_value_check person_2_sex_registered_at_birth person_2_gender_same_as_sex person_2_gender_identity - no_females_pregnant_household_person_2_value_check - females_in_soft_age_range_in_pregnant_household_person_2_value_check + no_household_member_likely_to_be_pregnant_person_2_check gender_2_over_retirement_value_check person_2_working_situation working_situation_2_under_retirement_value_check @@ -385,15 +380,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_3_age person_3_lead_partner relationship_3_multiple_partners_value_check - no_females_pregnant_household_person_3_age_value_check - females_in_soft_age_range_in_pregnant_household_person_3_age_value_check + no_household_member_likely_to_be_pregnant_person_age_3_check age_3_under_retirement_value_check age_3_over_retirement_value_check person_3_sex_registered_at_birth person_3_gender_same_as_sex person_3_gender_identity - no_females_pregnant_household_person_3_value_check - females_in_soft_age_range_in_pregnant_household_person_3_value_check + no_household_member_likely_to_be_pregnant_person_3_check gender_3_over_retirement_value_check person_3_working_situation working_situation_3_under_retirement_value_check @@ -403,15 +396,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_4_age person_4_lead_partner relationship_4_multiple_partners_value_check - no_females_pregnant_household_person_4_age_value_check - females_in_soft_age_range_in_pregnant_household_person_4_age_value_check + no_household_member_likely_to_be_pregnant_person_age_4_check age_4_under_retirement_value_check age_4_over_retirement_value_check person_4_sex_registered_at_birth person_4_gender_same_as_sex person_4_gender_identity - no_females_pregnant_household_person_4_value_check - females_in_soft_age_range_in_pregnant_household_person_4_value_check + no_household_member_likely_to_be_pregnant_person_4_check gender_4_over_retirement_value_check person_4_working_situation working_situation_4_under_retirement_value_check @@ -421,15 +412,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_5_age person_5_lead_partner relationship_5_multiple_partners_value_check - no_females_pregnant_household_person_5_age_value_check - females_in_soft_age_range_in_pregnant_household_person_5_age_value_check + no_household_member_likely_to_be_pregnant_person_age_5_check age_5_under_retirement_value_check age_5_over_retirement_value_check person_5_sex_registered_at_birth person_5_gender_same_as_sex person_5_gender_identity - no_females_pregnant_household_person_5_value_check - females_in_soft_age_range_in_pregnant_household_person_5_value_check + no_household_member_likely_to_be_pregnant_person_5_check gender_5_over_retirement_value_check person_5_working_situation working_situation_5_under_retirement_value_check @@ -439,15 +428,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_6_age person_6_lead_partner relationship_6_multiple_partners_value_check - no_females_pregnant_household_person_6_age_value_check - females_in_soft_age_range_in_pregnant_household_person_6_age_value_check + no_household_member_likely_to_be_pregnant_person_age_6_check age_6_under_retirement_value_check age_6_over_retirement_value_check person_6_sex_registered_at_birth person_6_gender_same_as_sex person_6_gender_identity - no_females_pregnant_household_person_6_value_check - females_in_soft_age_range_in_pregnant_household_person_6_value_check + no_household_member_likely_to_be_pregnant_person_6_check gender_6_over_retirement_value_check person_6_working_situation working_situation_6_under_retirement_value_check @@ -457,15 +444,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_7_age person_7_lead_partner relationship_7_multiple_partners_value_check - no_females_pregnant_household_person_7_age_value_check - females_in_soft_age_range_in_pregnant_household_person_7_age_value_check + no_household_member_likely_to_be_pregnant_person_age_7_check age_7_under_retirement_value_check age_7_over_retirement_value_check person_7_sex_registered_at_birth person_7_gender_same_as_sex person_7_gender_identity - no_females_pregnant_household_person_7_value_check - females_in_soft_age_range_in_pregnant_household_person_7_value_check + no_household_member_likely_to_be_pregnant_person_7_check gender_7_over_retirement_value_check person_7_working_situation working_situation_7_under_retirement_value_check @@ -475,15 +460,13 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod person_8_age person_8_lead_partner relationship_8_multiple_partners_value_check - no_females_pregnant_household_person_8_age_value_check - females_in_soft_age_range_in_pregnant_household_person_8_age_value_check + no_household_member_likely_to_be_pregnant_person_age_8_check age_8_under_retirement_value_check age_8_over_retirement_value_check person_8_sex_registered_at_birth person_8_gender_same_as_sex person_8_gender_identity - no_females_pregnant_household_person_8_value_check - females_in_soft_age_range_in_pregnant_household_person_8_value_check + no_household_member_likely_to_be_pregnant_person_8_check gender_8_over_retirement_value_check person_8_working_situation working_situation_8_under_retirement_value_check diff --git a/spec/models/form/lettings/subsections/household_needs_spec.rb b/spec/models/form/lettings/subsections/household_needs_spec.rb index 7c3a2a505..01423f8dd 100644 --- a/spec/models/form/lettings/subsections/household_needs_spec.rb +++ b/spec/models/form/lettings/subsections/household_needs_spec.rb @@ -53,8 +53,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdNeeds, type: :model do armed_forces_serving armed_forces_injured pregnant - no_females_pregnant_household_value_check - females_in_soft_age_range_in_pregnant_household_value_check + no_household_member_likely_to_be_pregnant_check access_needs_exist type_of_access_needs health_conditions