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
CLDC-4143-update-gender-validations
Samuel Young 7 days ago
parent
commit
7616b6b302
  1. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_age_value_check.rb
  2. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check.rb
  3. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_lead_value_check.rb
  4. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_age_value_check.rb
  5. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_person_value_check.rb
  6. 8
      app/models/form/lettings/pages/females_in_soft_age_range_in_pregnant_household_value_check.rb
  7. 6
      app/models/form/lettings/pages/no_females_pregnant_household_lead_age_value_check.rb
  8. 6
      app/models/form/lettings/pages/no_females_pregnant_household_lead_hhmemb_value_check.rb
  9. 6
      app/models/form/lettings/pages/no_females_pregnant_household_lead_value_check.rb
  10. 6
      app/models/form/lettings/pages/no_females_pregnant_household_person_age_value_check.rb
  11. 6
      app/models/form/lettings/pages/no_females_pregnant_household_person_value_check.rb
  12. 6
      app/models/form/lettings/pages/no_females_pregnant_household_value_check.rb
  13. 87
      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

8
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

8
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

8
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

8
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

8
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

8
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

6
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

6
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

6
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

6
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

6
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

6
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

87
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,52 @@ 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?
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 +258,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

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,
"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,
},
],
)

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,
"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,
},
],
)

10
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

Loading…
Cancel
Save