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. 46
      spec/models/form/lettings/questions/referral_register_spec.rb
  4. 3
      spec/models/form/lettings/subsections/household_situation_spec.rb
  5. 73
      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

46
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,10 +29,48 @@ RSpec.describe Form::Lettings::Questions::ReferralRegister, type: :model do
expect(question.type).to eq("radio") expect(question.type).to eq("radio")
end end
context "when log is a renewal" do
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 it "is not marked as derived" do
expect(question.derived?(nil)).to be false expect(question.derived?(log)).to be false
end
end end
context "when log is owned by an LA" do
let(:provider_type) { :la }
it "has the correct answer_options" do
expect(question.answer_options).to eq(
{
"1" => {
"value" => "Renewal to the same tenant in the same property",
},
"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 it "has the correct answer_options" do
expect(question.answer_options).to eq( expect(question.answer_options).to eq(
{ {
@ -42,6 +83,7 @@ RSpec.describe Form::Lettings::Questions::ReferralRegister, type: :model do
}.freeze, }.freeze,
) )
end end
end
it "has the correct question_number" do it "has the correct question_number" do
expect(question.question_number).to eq(84) expect(question.question_number).to eq(84)

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
], ],

73
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,6 +649,9 @@ 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|
context "when year is 2025" do
let(:startdate) { collection_start_date_for_year(2025) }
it "prevten cannot be #{prevten[:code]}" do it "prevten cannot be #{prevten[:code]}" do
record.referral_type = 3 record.referral_type = 3
record.referral = 1 record.referral = 1
@ -605,6 +664,20 @@ RSpec.describe Validations::HouseholdValidations do
.to include(match I18n.t("validations.lettings.household.referral.prevten_invalid", prevten: "")) .to include(match I18n.t("validations.lettings.household.referral.prevten_invalid", prevten: ""))
end end
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