From 5ae1d22f66d2df0eae39daf1bbbe845f339fcd89 Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 25 Nov 2021 10:40:35 +0000 Subject: [PATCH] Add major repairs dates validation --- app/validations/date_validations.rb | 9 ++++++ spec/fixtures/complete_case_log.json | 24 ++++++++-------- spec/models/case_log_spec.rb | 41 ++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/app/validations/date_validations.rb b/app/validations/date_validations.rb index 77f737344..3c7c85046 100644 --- a/app/validations/date_validations.rb +++ b/app/validations/date_validations.rb @@ -1,6 +1,15 @@ module DateValidations def validate_property_major_repairs(record) date_valid?("mrcdate", record) + if record["startdate"].present? && record["mrcdate"].present? && record["startdate"] < record["mrcdate"] + record.errors.add :mrcdate, "Major repairs date must be before the tenancy start date" + end + if (record["rsnvac"] == "First let of newbuild property" || + record["rsnvac"] == "First let of conversion/rehabilitation/acquired property" || + record["rsnvac"] == "First let of leased property") && + record["mrcdate"].present? + record.errors.add :mrcdate, "Major repairs date must be before the tenancy start date" + end end def validate_startdate(record) diff --git a/spec/fixtures/complete_case_log.json b/spec/fixtures/complete_case_log.json index a1bcea38b..fc175bfe0 100644 --- a/spec/fixtures/complete_case_log.json +++ b/spec/fixtures/complete_case_log.json @@ -65,11 +65,11 @@ "property_building_type": "dummy", "beds": 3, "property_void_date": "03/11/2019", - "majorrepairs": "No", - "mrcdate": "05/05/2020", - "mrcday": 5, - "mrcmonth": 5, - "mrcyear": 2020, + "majorrepairs": "Yes", + "mrcdate": "12/02/2019", + "mrcday": 12, + "mrcmonth": 2, + "mrcyear": 2019, "offered": 2, "wchair": "Yes", "net_income_known": "Yes", @@ -120,17 +120,17 @@ "rp_hardship": "No", "rp_dontknow": "No", "discarded_at": "05/05/2020", - "override_net_income_validation": "", - "gdpr_acceptance": "", + "override_net_income_validation": "", + "gdpr_acceptance": "", "gdpr_declined": "", - "property_owner_organisation": "", + "property_owner_organisation": "", "property_manager_organisation": "", - "sale_or_letting": "", - "rent_type": "", + "sale_or_letting": "", + "rent_type": "", "intermediate_rent_product_name": "", - "needs_type": "", + "needs_type": "", "sale_completion_date": "01/01/2020", - "purchaser_code": "", + "purchaser_code": "", "propcode": "123", "postcode": "a1", "postcod2": "w3", diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 0ffb5cc9c..45ee25098 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -410,6 +410,47 @@ RSpec.describe Form, type: :model do end end end + + context "major repairs date" do + it "cannot be later than the tenancy start date" do + expect { + CaseLog.create!( + mrcdate: Date.new(2020, 10, 10), + startdate: Date.new(2020, 10, 9), + ) + }.to raise_error(ActiveRecord::RecordInvalid) + + expect { + CaseLog.create!( + mrcdate: Date.new(2020, 10, 9), + startdate: Date.new(2020, 10, 10), + ) + }.not_to raise_error + end + + it "must not be completed if reason for vacancy is first let" do + expect { + CaseLog.create!( + mrcdate: Date.new(2020, 10, 10), + rsnvac: "First let of newbuild property", + ) + }.to raise_error(ActiveRecord::RecordInvalid) + + expect { + CaseLog.create!( + mrcdate: Date.new(2020, 10, 10), + rsnvac: "First let of conversion/rehabilitation/acquired property", + ) + }.to raise_error(ActiveRecord::RecordInvalid) + + expect { + CaseLog.create!( + mrcdate: Date.new(2020, 10, 10), + rsnvac: "First let of leased property", + ) + }.to raise_error(ActiveRecord::RecordInvalid) + end + end end describe "status" do