Browse Source

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
pull/3183/head
Samuel Young 1 week ago committed by samyou-softwire
parent
commit
2623ca07eb
  1. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb
  2. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb
  3. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb
  4. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb
  5. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb
  6. 6
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb
  7. 4
      app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb
  8. 4
      app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb
  9. 4
      app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb
  10. 4
      app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb
  11. 4
      app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb
  12. 4
      app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb
  13. 89
      app/models/validations/soft_validations.rb
  14. 4
      spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check_spec.rb
  15. 4
      spec/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check_spec.rb
  16. 10
      spec/models/validations/soft_validations_spec.rb
  17. 14
      spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb

6
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) super(id, hsh, subsection)
@id = "females_in_soft_age_range_in_pregnant_household_lead_age_value_check" @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" @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 = { @title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [], "arguments" => [],
@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValu
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

6
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) super(id, hsh, subsection)
@id = "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check" @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" @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 = { @title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [], "arguments" => [],
@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadHhmembV
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

6
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 super
@id = "females_in_soft_age_range_in_pregnant_household_lead_value_check" @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" @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 = { @title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [], "arguments" => [],
@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadValueCh
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

6
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" @copy_key = "lettings.soft_validations.pregnancy_value_check.females_in_soft_age_range_in_pregnant_household_value_check"
@depends_on = [ @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, "age#{person_index}_known" => 0,
}, },
] ]
@ -25,6 +25,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonAgeVa
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

6
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 = [ @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, "details_known_#{person_index}" => 0,
}, },
] ]
@ -26,6 +26,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPersonValue
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

6
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 super
@id = "females_in_soft_age_range_in_pregnant_household_value_check" @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" @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 = { @title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [], "arguments" => [],
@ -19,6 +19,10 @@ class Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdValueCheck
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8 age1 age2 age3 age4 age5 age6 age7 age8]
end end
end
end end

4
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 end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

4
app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb

@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadHhmembValueCheck < ::
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

4
app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb

@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadValueCheck < ::Form::
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

4
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 end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

4
app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb

@ -20,6 +20,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdPersonValueCheck < ::Form
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

4
app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb

@ -19,6 +19,10 @@ class Form::Lettings::Pages::NoFemalesPregnantHouseholdValueCheck < ::Form::Page
end end
def interruption_screen_question_ids 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] %w[preg_occ sex1 sex2 sex3 sex4 sex5 sex6 sex7 sex8]
end end
end
end end

89
app/models/validations/soft_validations.rb

@ -76,29 +76,11 @@ module Validations::SoftValidations
end end
def all_male_tenants_in_a_pregnant_household? 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 end
def female_in_pregnant_household_in_soft_validation_range? def non_males_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 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
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
end end
TWO_YEARS_IN_DAYS = 730 TWO_YEARS_IN_DAYS = 730
@ -221,25 +203,54 @@ module Validations::SoftValidations
private 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) def details_known_or_lead_tenant?(tenant_number)
return true if tenant_number == 1 return true if tenant_number == 1
public_send("details_known_#{tenant_number}").zero? public_send("details_known_#{tenant_number}").zero?
end end
def females_in_age_range(min, max) def any_non_male_in_expected_pregnancy_age_range(min, max)
person_count = hhmemb || 8 person_count = hhmemb || 8
(1..person_count).any? do |n| (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
end end
def females_in_the_household? def non_males_in_the_household?
person_count = hhmemb || 8 person_count = hhmemb || 8
(1..person_count).any? do |n| (1..person_count).any? do |n|
public_send("sex#{n}") == "F" || public_send("sex#{n}").nil? person_is_non_male(n)
end end
end end
@ -249,10 +260,36 @@ private
person_count = hhmemb || 8 person_count = hhmemb || 8
(1..person_count).all? do |n| (1..person_count).all? do |n|
public_send("sex#{n}") == "M" person_is_male(n)
end end
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) def tenant_is_retired?(economic_status)
economic_status == 5 economic_status == 5
end end

4
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, "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, "age3_known" => 0,
"female_in_pregnant_household_in_soft_validation_range?" => true, "non_males_in_pregnant_household_in_soft_validation_range?" => true,
}, },
], ],
) )

4
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, "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, "details_known_3" => 0,
"female_in_pregnant_household_in_soft_validation_range?" => true, "non_males_in_pregnant_household_in_soft_validation_range?" => true,
}, },
], ],
) )

10
spec/models/validations/soft_validations_spec.rb

@ -199,7 +199,7 @@ RSpec.describe Validations::SoftValidations do
record.age1 = 18 record.age1 = 18
record.sex1 = "M" record.sex1 = "M"
record.age1_known = 0 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
end end
@ -210,7 +210,7 @@ RSpec.describe Validations::SoftValidations do
record.preg_occ = 1 record.preg_occ = 1
record.hhmemb = 1 record.hhmemb = 1
record.age1_known = 0 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
end end
@ -221,7 +221,7 @@ RSpec.describe Validations::SoftValidations do
record.preg_occ = 1 record.preg_occ = 1
record.hhmemb = 1 record.hhmemb = 1
expect(record.all_male_tenants_in_a_pregnant_household?).to be false 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
end end
@ -230,7 +230,7 @@ RSpec.describe Validations::SoftValidations do
record.preg_occ = 1 record.preg_occ = 1
record.hhmemb = 2 record.hhmemb = 2
expect(record.all_male_tenants_in_a_pregnant_household?).to be false 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
end end
@ -244,7 +244,7 @@ RSpec.describe Validations::SoftValidations do
end end
record.preg_occ = 1 record.preg_occ = 1
record.hhmemb = 9 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 end
end end

14
spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb

@ -2084,18 +2084,22 @@ RSpec.describe BulkUpload::Lettings::Year2026::RowParser do
end end
context "when a soft validation is triggered that relates both to fields that are and are not routed to" do 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 it "adds errors to fields that are routed to" do
parser.valid? parser.valid?
expect(parser.errors.where(:field_49, category: :soft_validation)).to be_present expect(parser.errors.where(:field_130, category: :soft_validation)).to be_present
expect(parser.errors.where(:field_53, 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 end
it "does not add errors to fields that are not routed to" do it "does not add errors to fields that are not routed to" do
parser.valid? parser.valid?
expect(parser.errors.where(:field_57, 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_61, 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
end end

Loading…
Cancel
Save