From 73be38242eec8a6651135a095a53779030d14640 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Tue, 3 Feb 2026 12:20:52 +0000 Subject: [PATCH] fixup! CLDC-4189: Add tests fix missing cases in page specs use a loop and before blocks for household validation tests --- .../referral_org_directly_referred_spec.rb | 8 + .../pages/referral_org_nominated_spec.rb | 8 + .../validations/household_validations_spec.rb | 213 ++++++++---------- 3 files changed, 112 insertions(+), 117 deletions(-) diff --git a/spec/models/form/lettings/pages/referral_org_directly_referred_spec.rb b/spec/models/form/lettings/pages/referral_org_directly_referred_spec.rb index fc308aceb..27e1cfa50 100644 --- a/spec/models/form/lettings/pages/referral_org_directly_referred_spec.rb +++ b/spec/models/form/lettings/pages/referral_org_directly_referred_spec.rb @@ -37,6 +37,14 @@ RSpec.describe Form::Lettings::Pages::ReferralOrgDirectlyReferred, type: :model expect(page.depends_on).to be nil end + context "and log owning organisation is not prp" do + let(:prp?) { false } + + it "is not routed to" do + expect(page.routed_to?(log, nil)).to be false + end + end + context "and log owning organisation is prp" do let(:prp?) { true } diff --git a/spec/models/form/lettings/pages/referral_org_nominated_spec.rb b/spec/models/form/lettings/pages/referral_org_nominated_spec.rb index 1f0c0aab5..68a0a17f1 100644 --- a/spec/models/form/lettings/pages/referral_org_nominated_spec.rb +++ b/spec/models/form/lettings/pages/referral_org_nominated_spec.rb @@ -37,6 +37,14 @@ RSpec.describe Form::Lettings::Pages::ReferralOrgNominated, type: :model do expect(page.depends_on).to be nil end + context "and log owning organisation is not prp" do + let(:prp?) { false } + + it "is not routed to" do + expect(page.routed_to?(log, nil)).to be false + end + end + context "and log owning organisation is prp" do let(:prp?) { true } diff --git a/spec/models/validations/household_validations_spec.rb b/spec/models/validations/household_validations_spec.rb index 2ccf89af6..03a99aa9a 100644 --- a/spec/models/validations/household_validations_spec.rb +++ b/spec/models/validations/household_validations_spec.rb @@ -494,128 +494,107 @@ RSpec.describe Validations::HouseholdValidations do context "when start year is 2026" do let(:startdate) { collection_start_date_for_year(2026) } - context "and record is internal transfer via LA path" do - before do - record.owning_organisation.provider_type = "LA" - record.referral_register = 2 - end - - [ - { code: 3, label: "Private sector tenancy" }, - { code: 27, label: "Owner occupation (low-cost home ownership)" }, - { code: 26, label: "Owner occupation (private)" }, - { code: 28, label: "Living with friends or family (long-term)" }, - { code: 39, label: "Sofa surfing (moving regularly between family or friends, no permanent bed)" }, - { code: 14, label: "Bed and breakfast" }, - { code: 7, label: "Direct access hostel" }, - { code: 10, label: "Hospital" }, - { code: 29, label: "Prison or approved probation hostel" }, - { code: 19, label: "Rough sleeping" }, - { code: 18, label: "Any other temporary accommodation" }, - { code: 13, label: "Children’s home or foster care" }, - { code: 24, label: "Home Office Asylum Support" }, - { code: 37, label: "Host family or similar refugee accommodation" }, - { code: 23, label: "Mobile home or caravan" }, - { code: 21, label: "Refuge" }, - { code: 9, label: "Residential care home" }, - { code: 4, label: "Tied housing or rented with job" }, - { code: 25, label: "Any other accommodation" }, - ].each do |prevten| - context "and prevten is #{prevten[:code]}" do - it "adds an error" do - record.referral_register = 2 - record.prevten = prevten[:code] - household_validator.validate_referral(record) - expect(record.errors["prevten"]) - .to include(match I18n.t("validations.lettings.household.prevten.general_needs.internal_transfer", prevten: prevten[:label])) - expect(record.errors["referral_register"]) - .to include(match I18n.t("validations.lettings.household.referral.general_needs.internal_transfer", prevten: prevten[:label])) - end - end - end - - [ - { code: 30, label: "Fixed-term local authority general needs tenancy" }, - { code: 31, label: "Lifetime local authority general needs tenancy" }, - { code: 32, label: "Fixed-term private registered provider (PRP) general needs tenancy" }, - { code: 33, label: "Lifetime private registered provider (PRP) general needs tenancy" }, - { code: 35, label: "Extra care housing" }, - { code: 38, label: "Older people’s housing for tenants with low support needs" }, - { code: 6, label: "Other supported housing" }, - ].each do |prevten| - context "and prevten is #{prevten[:code]}" do - before do - record.prevten = prevten[:code] - end - - it "does not add an error" do - household_validator.validate_referral(record) - expect(record.errors["prevten"]).to be_empty - expect(record.errors["referral"]).to be_empty - end + [ + { + internal_transfer: true, + label: "LA", + referral_register: 2, + referral_noms: nil, + }, + { + internal_transfer: true, + label: "PRP", + referral_register: 6, + referral_noms: 3, + }, + { + internal_transfer: false, + label: "LA", + referral_register: 1, + referral_noms: nil, + }, + { + internal_transfer: false, + label: "PRP", + referral_register: 6, + referral_noms: 2, + }, + ] + .each do |scenario| + context "and record #{scenario[:internal_transfer] ? 'is ' : ''}internal transfer via #{scenario[:label]} path" do + before do + record.owning_organisation.provider_type = scenario[:label] + record.referral_register = scenario[:referral_register] + record.referral_noms = scenario[:referral_noms] end - end - end - - context "and record is internal transfer via PRP path" do - before do - record.owning_organisation.provider_type = "PRP" - record.referral_register = 6 - record.referral_noms = 3 - end - [ - { code: 3, label: "Private sector tenancy" }, - { code: 27, label: "Owner occupation (low-cost home ownership)" }, - { code: 26, label: "Owner occupation (private)" }, - { code: 28, label: "Living with friends or family (long-term)" }, - { code: 39, label: "Sofa surfing (moving regularly between family or friends, no permanent bed)" }, - { code: 14, label: "Bed and breakfast" }, - { code: 7, label: "Direct access hostel" }, - { code: 10, label: "Hospital" }, - { code: 29, label: "Prison or approved probation hostel" }, - { code: 19, label: "Rough sleeping" }, - { code: 18, label: "Any other temporary accommodation" }, - { code: 13, label: "Children’s home or foster care" }, - { code: 24, label: "Home Office Asylum Support" }, - { code: 37, label: "Host family or similar refugee accommodation" }, - { code: 23, label: "Mobile home or caravan" }, - { code: 21, label: "Refuge" }, - { code: 9, label: "Residential care home" }, - { code: 4, label: "Tied housing or rented with job" }, - { code: 25, label: "Any other accommodation" }, - ].each do |prevten| - context "and prevten is #{prevten[:code]}" do - it "adds an error" do - record.referral_register = 2 - record.prevten = prevten[:code] - household_validator.validate_referral(record) - expect(record.errors["prevten"]) - .to include(match I18n.t("validations.lettings.household.prevten.general_needs.internal_transfer", prevten: prevten[:label])) - expect(record.errors["referral_register"]) - .to include(match I18n.t("validations.lettings.household.referral.general_needs.internal_transfer", prevten: prevten[:label])) + [ + { code: 3, label: "Private sector tenancy" }, + { code: 27, label: "Owner occupation (low-cost home ownership)" }, + { code: 26, label: "Owner occupation (private)" }, + { code: 28, label: "Living with friends or family (long-term)" }, + { code: 39, label: "Sofa surfing (moving regularly between family or friends, no permanent bed)" }, + { code: 14, label: "Bed and breakfast" }, + { code: 7, label: "Direct access hostel" }, + { code: 10, label: "Hospital" }, + { code: 29, label: "Prison or approved probation hostel" }, + { code: 19, label: "Rough sleeping" }, + { code: 18, label: "Any other temporary accommodation" }, + { code: 13, label: "Children’s home or foster care" }, + { code: 24, label: "Home Office Asylum Support" }, + { code: 37, label: "Host family or similar refugee accommodation" }, + { code: 23, label: "Mobile home or caravan" }, + { code: 21, label: "Refuge" }, + { code: 9, label: "Residential care home" }, + { code: 4, label: "Tied housing or rented with job" }, + { code: 25, label: "Any other accommodation" }, + ].each do |prevten| + context "and prevten is #{prevten[:code]}" do + before do + record.prevten = prevten[:code] + end + + if scenario[:internal_transfer] + it "adds an error" do + household_validator.validate_referral(record) + expect(record.errors["prevten"]) + .to include(match I18n.t("validations.lettings.household.prevten.general_needs.internal_transfer", prevten: prevten[:label])) + expect(record.errors["referral_register"]) + .to include(match I18n.t("validations.lettings.household.referral.general_needs.internal_transfer", prevten: prevten[:label])) + expect(record.errors["referral_noms"]) + .to include(match I18n.t("validations.lettings.household.referral.general_needs.internal_transfer", prevten: prevten[:label])) + end + else + it "does not add an error" do + household_validator.validate_referral(record) + expect(record.errors["prevten"]).to be_empty + expect(record.errors["referral_register"]).to be_empty + expect(record.errors["referral_noms"]).to be_empty + end + end end end - end - - [ - { code: 30, label: "Fixed-term local authority general needs tenancy" }, - { code: 31, label: "Lifetime local authority general needs tenancy" }, - { code: 32, label: "Fixed-term private registered provider (PRP) general needs tenancy" }, - { code: 33, label: "Lifetime private registered provider (PRP) general needs tenancy" }, - { code: 35, label: "Extra care housing" }, - { code: 38, label: "Older people’s housing for tenants with low support needs" }, - { code: 6, label: "Other supported housing" }, - ].each do |prevten| - context "and prevten is #{prevten[:code]}" do - before do - record.prevten = prevten[:code] - end - it "does not add an error" do - household_validator.validate_referral(record) - expect(record.errors["prevten"]).to be_empty - expect(record.errors["referral"]).to be_empty + [ + { code: 30, label: "Fixed-term local authority general needs tenancy" }, + { code: 31, label: "Lifetime local authority general needs tenancy" }, + { code: 32, label: "Fixed-term private registered provider (PRP) general needs tenancy" }, + { code: 33, label: "Lifetime private registered provider (PRP) general needs tenancy" }, + { code: 35, label: "Extra care housing" }, + { code: 38, label: "Older people’s housing for tenants with low support needs" }, + { code: 6, label: "Other supported housing" }, + ].each do |prevten| + context "and prevten is #{prevten[:code]}" do + before do + record.prevten = prevten[:code] + end + + it "does not add an error" do + household_validator.validate_referral(record) + expect(record.errors["prevten"]).to be_empty + expect(record.errors["referral_register"]).to be_empty + expect(record.errors["referral_noms"]).to be_empty + end end end end