diff --git a/app/validations/date_validations.rb b/app/validations/date_validations.rb index 3c7c85046..14c37eaca 100644 --- a/app/validations/date_validations.rb +++ b/app/validations/date_validations.rb @@ -10,6 +10,16 @@ module DateValidations record["mrcdate"].present? record.errors.add :mrcdate, "Major repairs date must be before the tenancy start date" end + + if record["mrcdate"].present? && record["startdate"].present? && record["startdate"].to_date - record["mrcdate"].to_date > 730 + record.errors.add :mrcdate, "Major repairs cannot be more than 730 days before the tenancy start date" + end + end + + def validate_property_void_date(record) + if record["property_void_date"].present? && record["startdate"].present? && record["startdate"].to_date - record["property_void_date"].to_date > 730 + record.errors.add :property_void_date, "Void date cannot be more than 730 days before the tenancy start date" + end end def validate_startdate(record) diff --git a/db/migrate/20211125154916_change_property_void_date_type.rb b/db/migrate/20211125154916_change_property_void_date_type.rb new file mode 100644 index 000000000..fed1fcac9 --- /dev/null +++ b/db/migrate/20211125154916_change_property_void_date_type.rb @@ -0,0 +1,15 @@ +class ChangePropertyVoidDateType < ActiveRecord::Migration[6.1] + def up + change_table :case_logs, bulk: true do |t| + t.remove :property_void_date + t.column :property_void_date, :datetime + end + end + + def down + change_table :case_logs, bulk: true do |t| + t.remove :property_void_date + t.column :property_void_date, :string + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 1f7ec27d6..442270a46 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_11_25_114400) do +ActiveRecord::Schema.define(version: 2021_11_25_154916) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -83,7 +83,6 @@ ActiveRecord::Schema.define(version: 2021_11_25_114400) do t.integer "rsnvac" t.integer "unittype_gn" t.integer "beds" - t.string "property_void_date" t.integer "offered" t.integer "wchair" t.integer "earnings" @@ -166,6 +165,8 @@ ActiveRecord::Schema.define(version: 2021_11_25_114400) do t.string "why_dont_you_know_la" t.integer "unitletas" t.integer "builtype" + t.string "property_postcode" + t.datetime "property_void_date" t.index ["discarded_at"], name: "index_case_logs_on_discarded_at" end diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 45ee25098..45fdc7754 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -450,6 +450,33 @@ RSpec.describe Form, type: :model do ) }.to raise_error(ActiveRecord::RecordInvalid) end + + it "must have less than two years between the tenancy start date and major cprepairs date" do + expect { + CaseLog.create!( + startdate: Date.new(2020, 10, 10), + mrcdate: Date.new(2017, 10, 10), + ) + }.to raise_error(ActiveRecord::RecordInvalid) + end + end + + context "void date" do + it "must have less than two years between the tenancy start date and void" do + expect { + CaseLog.create!( + startdate: Date.new(2020, 10, 10), + property_void_date: Date.new(2017, 10, 10), + ) + }.to raise_error(ActiveRecord::RecordInvalid) + + expect { + CaseLog.create!( + startdate: Date.new(2020, 10, 10), + property_void_date: Date.new(2019, 10, 10), + ) + }.not_to raise_error + end end end