From e276f4facb9f555f2e3f4555bdeead3a96951154 Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 24 Jan 2022 11:41:59 +0000 Subject: [PATCH] Add a non temp accommocation validation for vacancy reason --- app/models/constants/case_log.rb | 4 ++-- .../validations/household_validations.rb | 12 ++++++++++++ config/forms/2021_2022.json | 2 +- config/locales/en.yml | 1 + spec/models/case_log_spec.rb | 19 +++++++++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/app/models/constants/case_log.rb b/app/models/constants/case_log.rb index d55c85355..c42ccfe27 100644 --- a/app/models/constants/case_log.rb +++ b/app/models/constants/case_log.rb @@ -103,11 +103,11 @@ module Constants::CaseLog }.freeze PREVIOUS_TENANCY = { - "Owner occupation (private) " => 26, + "Owner occupation (private)" => 26, "Owner occupation (low cost home ownership)" => 27, "Private sector tenancy" => 3, "Tied housing or rented with job" => 4, - "Supported housing" => 5, + "Supported housing" => 6, "Sheltered accomodation" => 8, "Residential care home" => 9, "Living with friends or family" => 28, diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index 6d364667d..faff2bd8f 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -84,6 +84,18 @@ module Validations::HouseholdValidations end end + NON_TEMP_ACCOMMODATION = ["Tied housing or rented with job", + "Supported housing", + "Sheltered accomodation", + "Home Office Asylum Support", + "Other"].freeze + + def validate_property_vacancy_reason_not_first_let(record) + if record.rsnvac == "Relet to tenant who occupied same property as temporary accommodation" && NON_TEMP_ACCOMMODATION.include?(record.prevten) + record.errors.add :rsnvac, I18n.t("validations.property.rsnvac.non_temp_accommodation") + end + end + private def women_of_child_bearing_age_in_household(record) diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index 8187a04f8..7800ea51a 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -790,7 +790,7 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": "Owner occupation (private) ", + "0": "Owner occupation (private)", "1": "Owner occupation (low cost home ownership)", "2": "Private sector tenancy", "3": "Tied housing or rented with job", diff --git a/config/locales/en.yml b/config/locales/en.yml index fd5690a4a..f3c1674a4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -55,6 +55,7 @@ en: first_let_not_social: "Reason for vacancy cannot be first let if unit has been previously let as social housing" first_let_social: "Reason for vacancy must be first let if unit has been previously let as social housing" previous_let_social: "Property cannot have a previous let type if it is being let as social housing for the first time" + non_temp_accommodation: "Vacancy reason cannot be \"Relet to tenant who occupied same property as temporary accommodation\" if previous tenancy is a non temporary accommodation" financial: tshortfall: diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 376641f78..db19667b4 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -907,6 +907,25 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) end end + + context "Validate reason for vacancy" do + def check_rsnvac_validation(prevten) + expect { + CaseLog.create!(rsnvac: "Relet to tenant who occupied same property as temporary accommodation", + prevten: prevten, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) + }.to raise_error(ActiveRecord::RecordInvalid) + end + + it "cannot be temp accomodation if previous tenancy was non temp" do + check_rsnvac_validation("Tied housing or rented with job") + check_rsnvac_validation("Supported housing") + check_rsnvac_validation("Sheltered accomodation") + check_rsnvac_validation("Home Office Asylum Support") + check_rsnvac_validation("Other") + end + end end describe "status" do