Browse Source

CLDC-4188: Update tests

pull/3153/head
Samuel Young 3 weeks ago
parent
commit
b75c290a16
  1. 78
      spec/models/form/lettings/pages/referral_register_la_spec.rb
  2. 4
      spec/models/form/lettings/pages/referral_register_prp_spec.rb
  3. 70
      spec/models/form/lettings/questions/referral_register_spec.rb
  4. 3
      spec/models/form/lettings/subsections/household_situation_spec.rb
  5. 93
      spec/models/validations/household_validations_spec.rb

78
spec/models/form/lettings/pages/referral_register_la_spec.rb

@ -0,0 +1,78 @@
require "rails_helper"
RSpec.describe Form::Lettings::Pages::ReferralRegisterLa, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil }
let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form:) }
let(:form) { instance_double(Form, start_date: Time.zone.today) }
let(:la?) { nil }
let(:organisation) { instance_double(Organisation, la?: la?) }
let(:is_renewal?) { nil }
let(:log) { instance_double(LettingsLog, is_renewal?: is_renewal?, owning_organisation: organisation) }
before do
allow(subsection).to receive(:form).and_return(form)
end
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
end
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[referral_register])
end
it "has the correct id" do
expect(page.id).to eq("referral_register_la")
end
it "has the correct description" do
expect(page.description).to be_nil
end
it "has the correct depends_on" do
expect(page.depends_on).to be nil
end
context "when log is a renewal" do
let(:is_renewal?) { true }
context "and log owning organisation is la" do
let(:la?) { true }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to be false
end
end
context "and log owning organisation is not an la" do
let(:la?) { false }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to be false
end
end
end
context "when log is not a renewal" do
let(:is_renewal?) { false }
context "and log owning organisation is la" do
let(:la?) { true }
it "is routed to" do
expect(page.routed_to?(log, nil)).to be true
end
end
context "and log owning organisation is not an la" do
let(:la?) { false }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to be false
end
end
end
end

4
spec/models/form/lettings/pages/referral_register_spec.rb → spec/models/form/lettings/pages/referral_register_prp_spec.rb

@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
RSpec.describe Form::Lettings::Pages::ReferralRegister, type: :model do RSpec.describe Form::Lettings::Pages::ReferralRegisterPrp, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) } subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil } let(:page_id) { nil }
@ -21,7 +21,7 @@ RSpec.describe Form::Lettings::Pages::ReferralRegister, type: :model do
end end
it "has the correct id" do it "has the correct id" do
expect(page.id).to eq("referral_register") expect(page.id).to eq("referral_register_prp")
end end
it "has the correct description" do it "has the correct description" do

70
spec/models/form/lettings/questions/referral_register_spec.rb

@ -1,13 +1,16 @@
require "rails_helper" require "rails_helper"
RSpec.describe Form::Lettings::Questions::ReferralRegister, type: :model do RSpec.describe Form::Lettings::Questions::ReferralRegister, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) } subject(:question) { described_class.new(question_id, question_definition, page, provider_type) }
let(:question_id) { nil } let(:question_id) { nil }
let(:question_definition) { nil } let(:question_definition) { nil }
let(:page) { instance_double(Form::Page) } let(:page) { instance_double(Form::Page) }
let(:provider_type) { nil }
let(:subsection) { instance_double(Form::Subsection) } let(:subsection) { instance_double(Form::Subsection) }
let(:form) { instance_double(Form, start_date: Time.zone.today) } let(:form) { instance_double(Form, start_date: Time.zone.today) }
let(:is_renewal?) { nil }
let(:log) { instance_double(LettingsLog, is_renewal?: is_renewal?) }
before do before do
allow(page).to receive(:subsection).and_return(subsection) allow(page).to receive(:subsection).and_return(subsection)
@ -26,21 +29,60 @@ RSpec.describe Form::Lettings::Questions::ReferralRegister, type: :model do
expect(question.type).to eq("radio") expect(question.type).to eq("radio")
end end
it "is not marked as derived" do context "when log is a renewal" do
expect(question.derived?(nil)).to be false let(:is_renewal?) { true }
it "is marked as derived" do
expect(question.derived?(log)).to be true
end
end
context "when log is not a renewal" do
let(:is_renewal?) { false }
it "is not marked as derived" do
expect(question.derived?(log)).to be false
end
end end
it "has the correct answer_options" do context "when log is owned by an LA" do
expect(question.answer_options).to eq( let(:provider_type) { :la }
{
"1" => { it "has the correct answer_options" do
"value" => "Answer A", expect(question.answer_options).to eq(
}, {
"2" => { "1" => {
"value" => "Answer B", "value" => "Renewal to the same tenant in the same property",
}, },
}.freeze, "2" => {
) "value" => "Internal transfer from another property owned by the same local authority - for existing social tenants only",
},
"3" => {
"value" => "From a housing register (waiting list)",
},
"4" => {
"value" => "Tenant applied directly (not via a nomination or housing register)",
},
}.freeze,
)
end
end
context "when log is owned by an PRP" do
let(:provider_type) { :prp }
it "has the correct answer_options" do
expect(question.answer_options).to eq(
{
"1" => {
"value" => "Answer A",
},
"2" => {
"value" => "Answer B",
},
}.freeze,
)
end
end end
it "has the correct question_number" do it "has the correct question_number" do

3
spec/models/form/lettings/subsections/household_situation_spec.rb

@ -107,7 +107,8 @@ RSpec.describe Form::Lettings::Subsections::HouseholdSituation, type: :model do
reasonable_preference reasonable_preference
reasonable_preference_reason reasonable_preference_reason
allocation_system allocation_system
referral_register referral_register_la
referral_register_prp
referral_noms referral_noms
referral_org referral_org
], ],

93
spec/models/validations/household_validations_spec.rb

@ -1,6 +1,8 @@
require "rails_helper" require "rails_helper"
RSpec.describe Validations::HouseholdValidations do RSpec.describe Validations::HouseholdValidations do
include CollectionTimeHelper
subject(:household_validator) { validator_class.new } subject(:household_validator) { validator_class.new }
let(:validator_class) { Class.new { include Validations::HouseholdValidations } } let(:validator_class) { Class.new { include Validations::HouseholdValidations } }
@ -488,6 +490,60 @@ RSpec.describe Validations::HouseholdValidations do
expect(record.errors["homeless"]).to be_empty expect(record.errors["homeless"]).to be_empty
end end
end end
context "when start year is 2026 and record is internal transfer and owning organisation is LA" do
let(:startdate) { collection_start_date_for_year(2026) }
[
{ 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|
it "prevten cannot be #{prevten[:code]}" 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
[
{ 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|
it "prevten can be #{prevten[:code]}" do
record.referral_register = 2
record.prevten = prevten[:code]
household_validator.validate_referral(record)
expect(record.errors["prevten"]).to be_empty
expect(record.errors["referral"]).to be_empty
end
end
end
end end
describe "la validations" do describe "la validations" do
@ -593,16 +649,33 @@ RSpec.describe Validations::HouseholdValidations do
{ code: 28, label: "Living with friends or family" }, { code: 28, label: "Living with friends or family" },
{ code: 29, label: "Prison or approved probation hostel" }, { code: 29, label: "Prison or approved probation hostel" },
].each do |prevten| ].each do |prevten|
it "prevten cannot be #{prevten[:code]}" do context "when year is 2025" do
record.referral_type = 3 let(:startdate) { collection_start_date_for_year(2025) }
record.referral = 1
record.prevten = prevten[:code] it "prevten cannot be #{prevten[:code]}" do
household_validator.validate_previous_housing_situation(record) record.referral_type = 3
label = record.form.start_year_2025_or_later? && prevten[:code] == 28 ? "Living with friends or family (long-term)" : prevten[:label] record.referral = 1
expect(record.errors["prevten"]) record.prevten = prevten[:code]
.to include(match I18n.t("validations.lettings.household.prevten.internal_transfer", prevten: label)) household_validator.validate_previous_housing_situation(record)
expect(record.errors["referral"]) label = record.form.start_year_2025_or_later? && prevten[:code] == 28 ? "Living with friends or family (long-term)" : prevten[:label]
.to include(match I18n.t("validations.lettings.household.referral.prevten_invalid", prevten: "")) expect(record.errors["prevten"])
.to include(match I18n.t("validations.lettings.household.prevten.internal_transfer", prevten: label))
expect(record.errors["referral"])
.to include(match I18n.t("validations.lettings.household.referral.prevten_invalid", prevten: ""))
end
end
context "when year is 2026" do
let(:startdate) { collection_start_date_for_year(2026) }
it "prevten can be #{prevten[:code]}" do
record.referral_type = 3
record.referral = 1
record.prevten = prevten[:code]
household_validator.validate_previous_housing_situation(record)
expect(record.errors["prevten"]).to be_empty
expect(record.errors["referral"]).to be_empty
end
end end
end end
end end

Loading…
Cancel
Save