Browse Source

Merge branch 'main' into CLDC-3852-add-some-bu-docs

pull/2920/head
kosiakkatrina 7 months ago committed by GitHub
parent
commit
e3c1f480d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 13
      .github/workflows/run_tests.yml
  2. 80
      app/models/form/lettings/questions/reason.rb
  3. 5
      spec/factories/sales_log.rb
  4. 2
      spec/fixtures/files/sales_logs_csv_export_codes_23.csv
  5. 2
      spec/fixtures/files/sales_logs_csv_export_codes_24.csv
  6. 2
      spec/fixtures/files/sales_logs_csv_export_labels_23.csv
  7. 2
      spec/fixtures/files/sales_logs_csv_export_labels_24.csv
  8. 2
      spec/fixtures/files/sales_logs_csv_export_non_support_labels_24.csv
  9. 4
      spec/models/bulk_upload_spec.rb
  10. 45
      spec/models/form/lettings/questions/reason_spec.rb
  11. 3
      spec/models/validations/household_validations_spec.rb

13
.github/workflows/run_tests.yml

@ -69,6 +69,11 @@ jobs:
run: |
bundle exec rake assets:precompile
# This is temporary to fix flaky parallel tests due to `secret_key_base` being read before it's set
- name: Create local secret
run: |
echo $(ruby -e "require 'securerandom'; puts SecureRandom.hex(64)") > tmp/local_secret.txt
- name: Run tests
run: |
bundle exec rake parallel:spec['spec\/(?!features|models|requests|services)']
@ -244,6 +249,10 @@ jobs:
run: |
bundle exec rake assets:precompile
- name: Create local secret
run: |
echo $(ruby -e "require 'securerandom'; puts SecureRandom.hex(64)") > tmp/local_secret.txt
- name: Run tests
run: |
bundle exec rake parallel:spec['spec/requests']
@ -303,6 +312,10 @@ jobs:
run: |
bundle exec rake assets:precompile
- name: Create local secret
run: |
echo $(ruby -e "require 'securerandom'; puts SecureRandom.hex(64)") > tmp/local_secret.txt
- name: Run tests
run: |
bundle exec rake parallel:spec['spec\/services']

80
app/models/form/lettings/questions/reason.rb

@ -14,8 +14,8 @@ class Form::Lettings::Questions::Reason < ::Form::Question
end
def answer_options
if form.start_year_2024_or_later?
{
if form.start_year_2025_or_later?
return {
"50" => { "value" => "End of social or private sector tenancy - no fault" },
"51" => { "value" => "End of social or private sector tenancy - evicted due to anti-social behaviour (ASB)" },
"52" => { "value" => "End of social or private sector tenancy - evicted due to rent arrears" },
@ -25,6 +25,7 @@ class Form::Lettings::Questions::Reason < ::Form::Question
"45" => { "value" => "Discharged from prison" },
"46" => { "value" => "Discharged from long-stay hospital or similar institution" },
"4" => { "value" => "Loss of tied accommodation" },
"55" => { "value" => "Leaving foster care or children's home" },
"9" => { "value" => "Asked to leave by family or friends" },
"8" => { "value" => "Relationship breakdown (non-violent) with partner" },
"44" => { "value" => "Death of household member in last settled accommodation" },
@ -49,46 +50,83 @@ class Form::Lettings::Questions::Reason < ::Form::Question
"divider" => { "value" => true },
"47" => { "value" => "Tenant prefers not to say" },
}.freeze
else
{
"40" => { "value" => "End of assured shorthold tenancy (no fault)" },
"41" => { "value" => "End of assured shorthold tenancy (eviction or tenant at fault)" },
"42" => { "value" => "End of fixed term tenancy (no fault)" },
"43" => { "value" => "End of fixed term tenancy (eviction or tenant at fault)" },
end
if form.start_year_2024_or_later?
return {
"50" => { "value" => "End of social or private sector tenancy - no fault" },
"51" => { "value" => "End of social or private sector tenancy - evicted due to anti-social behaviour (ASB)" },
"52" => { "value" => "End of social or private sector tenancy - evicted due to rent arrears" },
"53" => { "value" => "End of social or private sector tenancy - evicted for any other reason" },
"1" => { "value" => "Permanently decanted from another property owned by this landlord" },
"46" => { "value" => "Discharged from long-stay hospital or similar institution" },
"45" => { "value" => "Discharged from prison" },
"2" => { "value" => "Left home country as a refugee" },
"45" => { "value" => "Discharged from prison" },
"46" => { "value" => "Discharged from long-stay hospital or similar institution" },
"4" => { "value" => "Loss of tied accommodation" },
"9" => { "value" => "Asked to leave by family or friends" },
"44" => { "value" => "Death of household member in last settled accommodation" },
"8" => { "value" => "Relationship breakdown (non-violent) with partner" },
"44" => { "value" => "Death of household member in last settled accommodation" },
"16" => { "value" => "To move nearer to family, friends or school" },
"17" => { "value" => "To move nearer to work" },
"48" => { "value" => "Domestic abuse - previously joint tenancy with partner" },
"49" => { "value" => "Domestic abuse - other" },
"31" => { "value" => "Hate crime" },
"10" => { "value" => "Racial harassment" },
"31" => { "value" => "Hate crime" },
"11" => { "value" => "Other problems with neighbours" },
"35" => { "value" => "Couldn’t afford fees attached to renewing the tenancy" },
"36" => { "value" => "Couldn’t afford increase in rent" },
"38" => { "value" => "Couldn’t afford rent or mortgage (employment)" },
"37" => { "value" => "Couldn’t afford rent or mortgage (welfare reforms)" },
"39" => { "value" => "Couldn’t afford rent or mortgage (other)" },
"34" => { "value" => "Repossession" },
"54" => { "value" => "Could no longer afford rent or mortgage" },
"12" => { "value" => "Property unsuitable because of overcrowding" },
"13" => { "value" => "Property unsuitable because of ill health or disability" },
"14" => { "value" => "Property unsuitable because of poor condition" },
"29" => { "value" => "Under occupation (offered incentive to downsize)" },
"30" => { "value" => "Under occupation (no incentive)" },
"18" => { "value" => "To move to accommodation with support" },
"19" => { "value" => "To move to independent accommodation" },
"30" => { "value" => "Under occupation (no incentive)" },
"29" => { "value" => "Under occupation (offered incentive to downsize)" },
"20" => { "value" => "Other" },
"47" => { "value" => "Tenant prefers not to say" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
"divider" => { "value" => true },
"47" => { "value" => "Tenant prefers not to say" },
}.freeze
end
{
"40" => { "value" => "End of assured shorthold tenancy (no fault)" },
"41" => { "value" => "End of assured shorthold tenancy (eviction or tenant at fault)" },
"42" => { "value" => "End of fixed term tenancy (no fault)" },
"43" => { "value" => "End of fixed term tenancy (eviction or tenant at fault)" },
"1" => { "value" => "Permanently decanted from another property owned by this landlord" },
"46" => { "value" => "Discharged from long-stay hospital or similar institution" },
"45" => { "value" => "Discharged from prison" },
"2" => { "value" => "Left home country as a refugee" },
"4" => { "value" => "Loss of tied accommodation" },
"9" => { "value" => "Asked to leave by family or friends" },
"44" => { "value" => "Death of household member in last settled accommodation" },
"8" => { "value" => "Relationship breakdown (non-violent) with partner" },
"16" => { "value" => "To move nearer to family, friends or school" },
"17" => { "value" => "To move nearer to work" },
"48" => { "value" => "Domestic abuse - previously joint tenancy with partner" },
"49" => { "value" => "Domestic abuse - other" },
"31" => { "value" => "Hate crime" },
"10" => { "value" => "Racial harassment" },
"11" => { "value" => "Other problems with neighbours" },
"35" => { "value" => "Couldn’t afford fees attached to renewing the tenancy" },
"36" => { "value" => "Couldn’t afford increase in rent" },
"38" => { "value" => "Couldn’t afford rent or mortgage (employment)" },
"37" => { "value" => "Couldn’t afford rent or mortgage (welfare reforms)" },
"39" => { "value" => "Couldn’t afford rent or mortgage (other)" },
"34" => { "value" => "Repossession" },
"12" => { "value" => "Property unsuitable because of overcrowding" },
"13" => { "value" => "Property unsuitable because of ill health or disability" },
"14" => { "value" => "Property unsuitable because of poor condition" },
"18" => { "value" => "To move to accommodation with support" },
"19" => { "value" => "To move to independent accommodation" },
"30" => { "value" => "Under occupation (no incentive)" },
"29" => { "value" => "Under occupation (offered incentive to downsize)" },
"20" => { "value" => "Other" },
"47" => { "value" => "Tenant prefers not to say" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 77, 2024 => 76 }.freeze

5
spec/factories/sales_log.rb

@ -80,6 +80,7 @@ FactoryBot.define do
noint { 2 }
privacynotice { 1 }
age1_known { 0 }
staircase { 1 }
age1 { Faker::Number.within(range: 27..45) }
sex1 { %w[F M X R].sample }
national { 18 }
@ -110,10 +111,10 @@ FactoryBot.define do
age6_known { 0 }
age6 { 40 }
income1nk { 0 }
income1 { 10_000 }
income1 { 13_400 }
inc1mort { 1 }
income2nk { 0 }
income2 { 10_000 }
income2 { 13_400 }
inc2mort { 1 }
uprn_known { 0 }
address_line1 { "Address line 1" }

2
spec/fixtures/files/sales_logs_csv_export_codes_23.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_codes_24.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_labels_23.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_labels_24.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_non_support_labels_24.csv vendored

File diff suppressed because one or more lines are too long

4
spec/models/bulk_upload_spec.rb

@ -21,10 +21,10 @@ RSpec.describe BulkUpload, type: :model do
describe "value check clearing" do
context "with a lettings log bulk upload" do
let(:log) { build(:lettings_log, :startdate_today, bulk_upload:) }
let(:log) { build(:lettings_log, startdate: Time.zone.local(2025, 4, 2), bulk_upload:) }
it "has the correct number of value checks to be set as confirmed" do
expect(bulk_upload.fields_to_confirm(log)).to match_array %w[rent_value_check void_date_value_check major_repairs_date_value_check pregnancy_value_check retirement_value_check referral_value_check net_income_value_check carehome_charges_value_check scharge_value_check pscharge_value_check supcharg_value_check address_search_value_check multiple_partners_value_check partner_under_16_value_check reasonother_value_check]
expect(bulk_upload.fields_to_confirm(log)).to match_array %w[rent_value_check void_date_value_check major_repairs_date_value_check pregnancy_value_check retirement_value_check referral_value_check net_income_value_check scharge_value_check pscharge_value_check supcharg_value_check address_search_value_check multiple_partners_value_check partner_under_16_value_check reasonother_value_check]
end
end

45
spec/models/form/lettings/questions/reason_spec.rb

@ -11,6 +11,7 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(false)
allow(form).to receive(:start_year_2025_or_later?).and_return(false)
allow(page).to receive(:subsection).and_return(subsection)
allow(subsection).to receive(:form).and_return(form)
end
@ -124,4 +125,48 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
})
end
end
context "with 2025/26 form" do
before do
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"50" => { "value" => "End of social or private sector tenancy - no fault" },
"51" => { "value" => "End of social or private sector tenancy - evicted due to anti-social behaviour (ASB)" },
"52" => { "value" => "End of social or private sector tenancy - evicted due to rent arrears" },
"53" => { "value" => "End of social or private sector tenancy - evicted for any other reason" },
"1" => { "value" => "Permanently decanted from another property owned by this landlord" },
"2" => { "value" => "Left home country as a refugee" },
"45" => { "value" => "Discharged from prison" },
"46" => { "value" => "Discharged from long-stay hospital or similar institution" },
"4" => { "value" => "Loss of tied accommodation" },
"55" => { "value" => "Leaving foster care or children's home" },
"9" => { "value" => "Asked to leave by family or friends" },
"8" => { "value" => "Relationship breakdown (non-violent) with partner" },
"44" => { "value" => "Death of household member in last settled accommodation" },
"16" => { "value" => "To move nearer to family, friends or school" },
"17" => { "value" => "To move nearer to work" },
"48" => { "value" => "Domestic abuse - previously joint tenancy with partner" },
"49" => { "value" => "Domestic abuse - other" },
"10" => { "value" => "Racial harassment" },
"31" => { "value" => "Hate crime" },
"11" => { "value" => "Other problems with neighbours" },
"34" => { "value" => "Repossession" },
"54" => { "value" => "Could no longer afford rent or mortgage" },
"12" => { "value" => "Property unsuitable because of overcrowding" },
"13" => { "value" => "Property unsuitable because of ill health or disability" },
"14" => { "value" => "Property unsuitable because of poor condition" },
"29" => { "value" => "Under occupation (offered incentive to downsize)" },
"30" => { "value" => "Under occupation (no incentive)" },
"18" => { "value" => "To move to accommodation with support" },
"19" => { "value" => "To move to independent accommodation" },
"20" => { "value" => "Other" },
"28" => { "value" => "Don’t know" },
"divider" => { "value" => true },
"47" => { "value" => "Tenant prefers not to say" },
})
end
end
end

3
spec/models/validations/household_validations_spec.rb

@ -743,8 +743,9 @@ RSpec.describe Validations::HouseholdValidations do
record.referral = 1
record.prevten = prevten[:code]
household_validator.validate_previous_housing_situation(record)
label = record.form.start_year_2025_or_later? && prevten[:code] == 28 ? "Living with friends and family (long-term)" : prevten[:label]
expect(record.errors["prevten"])
.to include(match I18n.t("validations.lettings.household.prevten.internal_transfer", prevten: prevten[:label]))
.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

Loading…
Cancel
Save