Browse Source

CLDC-4363: Update remaining model tests

CLDC-4363-check-tests-will-pass-at-end-of-crossover-period
samyou-softwire 3 days ago
parent
commit
11cab0d3d3
  1. 33
      spec/models/form/sales/pages/property_building_type_spec.rb
  2. 33
      spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb
  3. 66
      spec/models/validations/date_validations_spec.rb
  4. 51
      spec/models/validations/sales/soft_validations_spec.rb

33
spec/models/form/sales/pages/property_building_type_spec.rb

@ -1,12 +1,15 @@
require "rails_helper" require "rails_helper"
RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do
include CollectionTimeHelper
subject(:page) { described_class.new(page_id, page_definition, subsection) } subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil } let(:page_id) { nil }
let(:page_definition) { 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(:subsection) { instance_double(Form::Subsection, enabled?: true, form:) }
let(:saledate) { current_collection_start_date }
it "has correct subsection" do it "has correct subsection" do
expect(page.subsection).to eq(subsection) expect(page.subsection).to eq(subsection)
@ -24,32 +27,8 @@ RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do
expect(page.description).to be_nil expect(page.description).to be_nil
end 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:) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to be true
end
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 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:) } let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) }
it "is not routed to" do it "is not routed to" do
@ -58,11 +37,11 @@ RSpec.describe Form::Sales::Pages::PropertyBuildingType, type: :model do
end end
context "with a non-staircasing log" do 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:) } let(:log) { build(:sales_log, staircase: nil, saledate:) }
it "is routed to" do it "is routed to" do
expect(page.routed_to?(log, nil)).to be true expect(page.routed_to?(log, nil)).to be true
end end
end end
end
end end

33
spec/models/form/sales/pages/property_wheelchair_accessible_spec.rb

@ -1,12 +1,15 @@
require "rails_helper" require "rails_helper"
RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do
include CollectionTimeHelper
subject(:page) { described_class.new(page_id, page_definition, subsection) } subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil } let(:page_id) { nil }
let(:page_definition) { 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(:subsection) { instance_double(Form::Subsection, enabled?: true, form:) }
let(:saledate) { current_collection_start_date }
it "has correct subsection" do it "has correct subsection" do
expect(page.subsection).to eq(subsection) expect(page.subsection).to eq(subsection)
@ -24,32 +27,8 @@ RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do
expect(page.description).to be_nil expect(page.description).to be_nil
end 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:) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to be true
end
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 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:) } let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 1, saledate:) }
it "is not routed to" do it "is not routed to" do
@ -58,11 +37,11 @@ RSpec.describe Form::Sales::Pages::PropertyWheelchairAccessible, type: :model do
end end
context "with a non-staircasing log" do 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:) } let(:log) { build(:sales_log, :shared_ownership_setup_complete, staircase: 2, saledate:) }
it "is routed to" do it "is routed to" do
expect(page.routed_to?(log, nil)).to be true expect(page.routed_to?(log, nil)).to be true
end end
end end
end
end end

66
spec/models/validations/date_validations_spec.rb

@ -1,6 +1,8 @@
require "rails_helper" require "rails_helper"
RSpec.describe Validations::DateValidations do RSpec.describe Validations::DateValidations do
include CollectionTimeHelper
subject(:date_validator) { validator_class.new } subject(:date_validator) { validator_class.new }
let(:validator_class) { Class.new { include Validations::DateValidations } } let(:validator_class) { Class.new { include Validations::DateValidations } }
@ -54,30 +56,9 @@ RSpec.describe Validations::DateValidations do
expect(record.errors["mrcdate"]).to be_empty expect(record.errors["mrcdate"]).to be_empty
end 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
end
context "with 2025 logs or later" do
it "cannot be more than 20 years before the tenancy start date" do it "cannot be more than 20 years before the tenancy start date" do
record.startdate = Time.zone.local(2026, 2, 1) record.startdate = current_collection_start_date
record.mrcdate = Time.zone.local(2006, 1, 31) record.mrcdate = current_collection_start_date - 20.years - 1.day
date_validator.validate_property_major_repairs(record) date_validator.validate_property_major_repairs(record)
expect(record.errors["mrcdate"]) expect(record.errors["mrcdate"])
.to include(match I18n.t("validations.lettings.date.mrcdate.twenty_years_before_tenancy_start")) .to include(match I18n.t("validations.lettings.date.mrcdate.twenty_years_before_tenancy_start"))
@ -85,14 +66,13 @@ RSpec.describe Validations::DateValidations do
.to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_mrc_date")) .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_mrc_date"))
end end
it "must be within 20 years of the tenancy start date" do it "can be within 20 years of the tenancy start date" do
record.startdate = Time.zone.local(2026, 2, 1) record.startdate = current_collection_start_date
record.mrcdate = Time.zone.local(2006, 2, 1) record.mrcdate = current_collection_start_date - 20.years
date_validator.validate_property_major_repairs(record) date_validator.validate_property_major_repairs(record)
expect(record.errors["mrcdate"]).to be_empty expect(record.errors["mrcdate"]).to be_empty
expect(record.errors["startdate"]).to be_empty expect(record.errors["startdate"]).to be_empty
end end
end
context "when reason for vacancy is first let of property" do context "when reason for vacancy is first let of property" do
it "validates that no major repair date is provided for a new build" do it "validates that no major repair date is provided for a new build" do
@ -148,30 +128,9 @@ RSpec.describe Validations::DateValidations do
expect(record.errors["voiddate"]).to be_empty expect(record.errors["voiddate"]).to be_empty
end 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
end
context "with 2025 logs or later" do
it "cannot be more than 20 years before the tenancy start date" do it "cannot be more than 20 years before the tenancy start date" do
record.startdate = Time.zone.local(2026, 2, 1) record.startdate = current_collection_start_date
record.voiddate = Time.zone.local(2006, 1, 31) record.voiddate = current_collection_start_date - 20.years - 1.day
date_validator.validate_property_void_date(record) date_validator.validate_property_void_date(record)
date_validator.validate_startdate(record) date_validator.validate_startdate(record)
expect(record.errors["voiddate"]) expect(record.errors["voiddate"])
@ -180,14 +139,13 @@ RSpec.describe Validations::DateValidations do
.to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_void_date")) .to include(match I18n.t("validations.lettings.date.startdate.twenty_years_after_void_date"))
end end
it "must be within 20 years of the tenancy start date" do it "can be within 20 years of the tenancy start date" do
record.startdate = Time.zone.local(2026, 2, 1) record.startdate = current_collection_start_date
record.voiddate = Time.zone.local(2006, 2, 1) record.mrcdate = current_collection_start_date - 20.years - 1.day
date_validator.validate_property_void_date(record) date_validator.validate_property_void_date(record)
expect(record.errors["voiddate"]).to be_empty expect(record.errors["voiddate"]).to be_empty
expect(record.errors["startdate"]).to be_empty expect(record.errors["startdate"]).to be_empty
end end
end
context "when major repairs have been carried out" do context "when major repairs have been carried out" do
it "void_date cannot be after major repairs date" do it "void_date cannot be after major repairs date" do

51
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 expect(record).not_to be_income2_outside_soft_range_for_ecstat
end 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 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 it "returns true if income1 is below soft min for ecstat1" do
record.income1 = 13_399 record.income1 = 13_399

Loading…
Cancel
Save