Compare commits

...

2 Commits

Author SHA1 Message Date
Katherine Langford 21b1691831
CLDC-4148: New options for "Reason" [for old tenant leaving] question (#3139) 4 days ago
Samuel Young af98a7ad23
CLDC-NONE: Add a manual runner pipeline that can redeploy review app code (#3137) 4 days ago
  1. 29
      .github/workflows/manual_review_code_pipeline.yml
  2. 183
      app/models/form/lettings/questions/reason.rb
  3. 56
      spec/models/form/lettings/questions/reason_spec.rb

29
.github/workflows/manual_review_code_pipeline.yml

@ -0,0 +1,29 @@
name: Manual review app code pipeline
concurrency:
group: review-${{ inputs.review_app_key }}
on:
workflow_dispatch:
inputs:
review_app_key:
required: true
type: string
description: "The review app ID to deploy code for."
defaults:
run:
shell: bash
jobs:
code:
name: Deploy review app code
uses: ./.github/workflows/aws_deploy.yml
with:
aws_account_id: 837698168072
aws_role_prefix: core-dev
aws_task_prefix: core-review-${{ inputs.review_app_key }}
concurrency_tag: ${{ inputs.review_app_key }}
environment: review
permissions:
id-token: write

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

@ -14,120 +14,123 @@ class Form::Lettings::Questions::Reason < ::Form::Question
end
def answer_options
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" },
"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" },
"47" => { "value" => "Tenant prefers not to say" },
"20" => { "value" => "Other" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze
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" },
"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" },
"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" },
"47" => { "value" => "Tenant prefers not to say" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze
if form.start_year_2026_or_later?
QUESTIONS_FROM_YEAR[2026]
elsif form.start_year_2025_or_later?
QUESTIONS_FROM_YEAR[2025]
else
QUESTIONS_FROM_YEAR[2024]
end
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)" },
QUESTIONS_FROM_YEAR = {
2026 => {
"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" },
"55" => { "value" => "Leaving foster care or children's home" },
"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" },
"56" => { "value" => "Non-domestic violence (e.g. gang violence)" },
"57" => { "value" => "Cuckooing (property being used by others for illegal activity)" },
"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" },
"47" => { "value" => "Tenant prefers not to say" },
"20" => { "value" => "Other" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze,
2025 => {
"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" },
"47" => { "value" => "Tenant prefers not to say" },
"20" => { "value" => "Other" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze,
2024 => {
"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" },
"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" },
"47" => { "value" => "Tenant prefers not to say" },
"divider" => { "value" => true },
"28" => { "value" => "Don’t know" },
}.freeze
end
}.freeze,
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 77, 2024 => 76 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2024 => 76 }.freeze
end

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

@ -12,6 +12,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(form).to receive(:start_year_2026_or_later?).and_return(false)
allow(page).to receive(:subsection).and_return(subsection)
allow(subsection).to receive(:form).and_return(form)
end
@ -40,52 +41,52 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
expect(question).not_to be_derived(nil)
end
context "with 2023/24 form" do
context "with 2024/25 form" do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(true)
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"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)" },
"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" },
})
end
end
context "with 2024/25 form" do
context "with 2025/26 form" do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(true)
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has the correct answer_options" do
@ -99,6 +100,7 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
"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" },
@ -107,7 +109,7 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
"48" => { "value" => "Domestic abuse - previously joint tenancy with partner" },
"49" => { "value" => "Domestic abuse - other" },
"10" => { "value" => "Racial harassment" },
"31" => { "value" => "Hate crime" },
"31" => { "value" => "Hate crime" },
"11" => { "value" => "Other problems with neighbours" },
"34" => { "value" => "Repossession" },
"54" => { "value" => "Could no longer afford rent or mortgage" },
@ -118,17 +120,17 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
"30" => { "value" => "Under occupation (no incentive)" },
"18" => { "value" => "To move to accommodation with support" },
"19" => { "value" => "To move to independent accommodation" },
"47" => { "value" => "Tenant prefers not to say" },
"20" => { "value" => "Other" },
"28" => { "value" => "Don’t know" },
"divider" => { "value" => true },
"47" => { "value" => "Tenant prefers not to say" },
"28" => { "value" => "Don’t know" },
})
end
end
context "with 2025/26 form" do
context "with 2026/27 form" do
before do
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
allow(form).to receive(:start_year_2026_or_later?).and_return(true)
end
it "has the correct answer_options" do
@ -150,8 +152,10 @@ RSpec.describe Form::Lettings::Questions::Reason, type: :model do
"17" => { "value" => "To move nearer to work" },
"48" => { "value" => "Domestic abuse - previously joint tenancy with partner" },
"49" => { "value" => "Domestic abuse - other" },
"56" => { "value" => "Non-domestic violence (e.g. gang violence)" },
"57" => { "value" => "Cuckooing (property being used by others for illegal activity)" },
"10" => { "value" => "Racial harassment" },
"31" => { "value" => "Hate crime" },
"31" => { "value" => "Hate crime" },
"11" => { "value" => "Other problems with neighbours" },
"34" => { "value" => "Repossession" },
"54" => { "value" => "Could no longer afford rent or mortgage" },

Loading…
Cancel
Save