From 11cab0d3d3b5f81cf322a60c99ecfd3127099c27 Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 2 Apr 2026 14:31:13 +0100 Subject: [PATCH] CLDC-4363: Update remaining model tests --- .../pages/property_building_type_spec.rb | 49 +++------ .../property_wheelchair_accessible_spec.rb | 49 +++------ .../validations/date_validations_spec.rb | 104 ++++++------------ .../sales/soft_validations_spec.rb | 51 +-------- 4 files changed, 60 insertions(+), 193 deletions(-) diff --git a/spec/models/form/sales/pages/property_building_type_spec.rb b/spec/models/form/sales/pages/property_building_type_spec.rb index b9c6bddca..b5051cb35 100644 --- a/spec/models/form/sales/pages/property_building_type_spec.rb +++ b/spec/models/form/sales/pages/property_building_type_spec.rb @@ -1,12 +1,15 @@ require "rails_helper" RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do + include CollectionTimeHelper + subject(:page) { described_class.new(page_id, page_definition, subsection) } let(:page_id) { nil } let(:page_definition) { nil } - let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) } + let(:form) { instance_double(Form, start_date: current_collection_start_date) } let(:subsection) { instance_double(Form::Subsection, enabled?: true, form:) } + let(:saledate) { current_collection_start_date } it "has correct subsection" do expect(page.subsection).to eq(subsection) @@ -24,45 +27,21 @@ RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do expect(page.description).to be_nil end - context "with form year 2024" do - let(:form) { Form.new(nil, 2024, [], "sales") } - let(:saledate) { Time.zone.local(2024, 4, 1) } - - context "with a staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end - end - - context "with a non-staircasing log" do - let(:log) { build(:sales_log, staircase: nil, saledate:) } + context "with a staircasing log" do + let(:form) { Form.new(nil, current_collection_start_year, [], "sales") } + let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end + it "is not routed to" do + expect(page.routed_to?(log, nil)).to be false end end - context "with form year 2025" do - let(:form) { Form.new(nil, 2025, [], "sales") } - let(:saledate) { Time.zone.local(2025, 4, 1) } - - context "with a staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - - it "is not routed to" do - expect(page.routed_to?(log, nil)).to be false - end - end - - context "with a non-staircasing log" do - let(:log) { build(:sales_log, staircase: nil, saledate:) } + context "with a non-staircasing log" do + let(:form) { Form.new(nil, current_collection_start_year, [], "sales") } + let(:log) { build(:sales_log, staircase: nil, saledate:) } - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end + it "is routed to" do + expect(page.routed_to?(log, nil)).to be true end end end diff --git a/spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb b/spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb index bf0493a6d..8227432db 100644 --- a/spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb +++ b/spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb @@ -1,12 +1,15 @@ require "rails_helper" RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do + include CollectionTimeHelper + subject(:page) { described_class.new(page_id, page_definition, subsection) } let(:page_id) { nil } let(:page_definition) { nil } - let(:form) { instance_double(Form, start_year_2024_or_later?: false, start_date: Time.zone.local(2023, 4, 1)) } + let(:form) { instance_double(Form, start_year_2024_or_later?: true, start_date: current_collection_start_date) } let(:subsection) { instance_double(Form::Subsection, enabled?: true, form:) } + let(:saledate) { current_collection_start_date } it "has correct subsection" do expect(page.subsection).to eq(subsection) @@ -24,45 +27,21 @@ RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do expect(page.description).to be_nil end - context "with form year 2024" do - let(:form) { Form.new(nil, 2024, [], "sales") } - let(:saledate) { Time.zone.local(2024, 4, 1) } - - context "with a staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end - end - - context "with a non-staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 2, saledate:) } + context "with a staircasing log" do + let(:form) { Form.new(nil, current_collection_start_year, [], "sales") } + let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end + it "is not routed to" do + expect(page.routed_to?(log, nil)).to be false end end - context "with form year 2025" do - let(:form) { Form.new(nil, 2025, [], "sales") } - let(:saledate) { Time.zone.local(2025, 4, 1) } - - context "with a staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) } - - it "is not routed to" do - expect(page.routed_to?(log, nil)).to be false - end - end - - context "with a non-staircasing log" do - let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 2, saledate:) } + context "with a non-staircasing log" do + let(:form) { Form.new(nil, current_collection_start_year, [], "sales") } + let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 2, saledate:) } - it "is routed to" do - expect(page.routed_to?(log, nil)).to be true - end + it "is routed to" do + expect(page.routed_to?(log, nil)).to be true end end end diff --git a/spec/models/validations/date_validations_spec.rb b/spec/models/validations/date_validations_spec.rb index 626093e89..043b705a9 100644 --- a/spec/models/validations/date_validations_spec.rb +++ b/spec/models/validations/date_validations_spec.rb @@ -1,6 +1,8 @@ require "rails_helper" RSpec.describe Validations::DateValidations do + include CollectionTimeHelper + subject(:date_validator) { validator_class.new } let(:validator_class) { Class.new { include Validations::DateValidations } } @@ -54,44 +56,22 @@ RSpec.describe Validations::DateValidations do expect(record.errors["mrcdate"]).to be_empty end - context "with 2024 logs or earlier" do - it "cannot be more than 10 years before the tenancy start date" do - record.startdate = Time.zone.local(2024, 4, 1) - record.mrcdate = Time.zone.local(2014, 1, 31) - date_validator.validate_property_major_repairs(record) - expect(record.errors["mrcdate"]) - .to include(match I18n.t("validations.lettings.date.mrcdate.ten_years_before_tenancy_start")) - expect(record.errors["startdate"]) - .to include(match I18n.t("validations.lettings.date.startdate.ten_years_after_mrc_date")) - end - - it "must be within 10 years of the tenancy start date" do - record.startdate = Time.zone.local(2024, 2, 1) - record.mrcdate = Time.zone.local(2014, 2, 1) - date_validator.validate_property_major_repairs(record) - expect(record.errors["mrcdate"]).to be_empty - expect(record.errors["startdate"]).to be_empty - end + it "cannot be more than 20 years before the tenancy start date" do + record.startdate = current_collection_start_date + record.mrcdate = current_collection_start_date - 20.years - 1.day + date_validator.validate_property_major_repairs(record) + expect(record.errors["mrcdate"]) + .to include(match I18n.t("validations.lettings.date.mrcdate.twenty_years_before_tenancy_start")) + expect(record.errors["startdate"]) + .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_mrc_date")) end - context "with 2025 logs or later" do - it "cannot be more than 20 years before the tenancy start date" do - record.startdate = Time.zone.local(2026, 2, 1) - record.mrcdate = Time.zone.local(2006, 1, 31) - date_validator.validate_property_major_repairs(record) - expect(record.errors["mrcdate"]) - .to include(match I18n.t("validations.lettings.date.mrcdate.twenty_years_before_tenancy_start")) - expect(record.errors["startdate"]) - .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_mrc_date")) - end - - it "must be within 20 years of the tenancy start date" do - record.startdate = Time.zone.local(2026, 2, 1) - record.mrcdate = Time.zone.local(2006, 2, 1) - date_validator.validate_property_major_repairs(record) - expect(record.errors["mrcdate"]).to be_empty - expect(record.errors["startdate"]).to be_empty - end + it "can be within 20 years of the tenancy start date" do + record.startdate = current_collection_start_date + record.mrcdate = current_collection_start_date - 20.years + date_validator.validate_property_major_repairs(record) + expect(record.errors["mrcdate"]).to be_empty + expect(record.errors["startdate"]).to be_empty end context "when reason for vacancy is first let of property" do @@ -148,45 +128,23 @@ RSpec.describe Validations::DateValidations do expect(record.errors["voiddate"]).to be_empty end - context "with 2024 logs or earlier" do - it "cannot be more than 10 years before the tenancy start date" do - record.startdate = Time.zone.local(2024, 4, 1) - record.voiddate = Time.zone.local(2014, 1, 31) - date_validator.validate_property_void_date(record) - expect(record.errors["voiddate"]) - .to include(match I18n.t("validations.lettings.date.void_date.ten_years_before_tenancy_start")) - expect(record.errors["startdate"]) - .to include(match I18n.t("validations.lettings.date.startdate.ten_years_after_void_date")) - end - - it "must be within 10 years of the tenancy start date" do - record.startdate = Time.zone.local(2024, 2, 1) - record.voiddate = Time.zone.local(2014, 2, 1) - date_validator.validate_property_void_date(record) - expect(record.errors["voiddate"]).to be_empty - expect(record.errors["startdate"]).to be_empty - end + it "cannot be more than 20 years before the tenancy start date" do + record.startdate = current_collection_start_date + record.voiddate = current_collection_start_date - 20.years - 1.day + date_validator.validate_property_void_date(record) + date_validator.validate_startdate(record) + expect(record.errors["voiddate"]) + .to include(match I18n.t("validations.lettings.date.void_date.twenty_years_before_tenancy_start")) + expect(record.errors["startdate"]) + .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_void_date")) end - context "with 2025 logs or later" do - it "cannot be more than 20 years before the tenancy start date" do - record.startdate = Time.zone.local(2026, 2, 1) - record.voiddate = Time.zone.local(2006, 1, 31) - date_validator.validate_property_void_date(record) - date_validator.validate_startdate(record) - expect(record.errors["voiddate"]) - .to include(match I18n.t("validations.lettings.date.void_date.twenty_years_before_tenancy_start")) - expect(record.errors["startdate"]) - .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_void_date")) - end - - it "must be within 20 years of the tenancy start date" do - record.startdate = Time.zone.local(2026, 2, 1) - record.voiddate = Time.zone.local(2006, 2, 1) - date_validator.validate_property_void_date(record) - expect(record.errors["voiddate"]).to be_empty - expect(record.errors["startdate"]).to be_empty - end + it "can be within 20 years of the tenancy start date" do + record.startdate = current_collection_start_date + record.mrcdate = current_collection_start_date - 20.years - 1.day + date_validator.validate_property_void_date(record) + expect(record.errors["voiddate"]).to be_empty + expect(record.errors["startdate"]).to be_empty end context "when major repairs have been carried out" do diff --git a/spec/models/validations/sales/soft_validations_spec.rb b/spec/models/validations/sales/soft_validations_spec.rb index 0f8ff16c4..e2cd26f47 100644 --- a/spec/models/validations/sales/soft_validations_spec.rb +++ b/spec/models/validations/sales/soft_validations_spec.rb @@ -30,57 +30,8 @@ RSpec.describe Validations::Sales::SoftValidations do expect(record).not_to be_income2_outside_soft_range_for_ecstat end - context "when log year is before 2025" do - let(:record) { build(:sales_log, saledate: Time.zone.local(2024, 12, 25)) } - - it "does not trigger for low income1 if ecstat1 has no soft min" do - record.income1 = 50 - record.ecstat1 = 4 - expect(record).not_to be_income1_outside_soft_range_for_ecstat - end - - it "returns true if income1 is below soft min for ecstat1" do - record.income1 = 4500 - record.ecstat1 = 1 - expect(record).to be_income1_outside_soft_range_for_ecstat - end - - it "returns false if income1 is >= soft min for ecstat1" do - record.income1 = 1500 - record.ecstat1 = 2 - expect(record).not_to be_income1_outside_soft_range_for_ecstat - end - - it "does not trigger for income2 if ecstat2 has no soft min" do - record.income2 = 50 - record.ecstat2 = 8 - expect(record).not_to be_income2_outside_soft_range_for_ecstat - end - - it "returns true if income2 is below soft min for ecstat2" do - record.income2 = 999 - record.ecstat2 = 3 - expect(record).to be_income2_outside_soft_range_for_ecstat - end - - it "returns false if income2 is >= soft min for ecstat2" do - record.income2 = 2500 - record.ecstat2 = 5 - expect(record).not_to be_income2_outside_soft_range_for_ecstat - end - - it "does not trigger for being over maxima" do - record.ecstat1 = 1 - record.income1 = 200_000 - record.ecstat2 = 2 - record.income2 = 100_000 - expect(record).not_to be_income1_outside_soft_range_for_ecstat - expect(record).not_to be_income2_outside_soft_range_for_ecstat - end - end - context "when log year is 2025" do - let(:record) { build(:sales_log, saledate: Time.zone.local(2025, 12, 25)) } + let(:record) { build(:sales_log, saledate: collection_start_date_for_year(2025)) } it "returns true if income1 is below soft min for ecstat1" do record.income1 = 13_399