Browse Source

Merge 41b2b00003 into 3df65b8998

pull/3183/merge
Samuel Young 1 day ago committed by GitHub
parent
commit
f881fde466
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  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. 330
      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,
},
],
)

330
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.female_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.female_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.female_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.female_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.female_in_pregnant_household_in_soft_validation_range?).to be false
end
end
end

Loading…
Cancel
Save