From 67839dcaef36615b70d47b621206840779f2a3f8 Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis Date: Thu, 19 Feb 2026 09:58:48 +0000 Subject: [PATCH] CLDC-4173: update tests --- spec/factories/sales_log.rb | 1 + .../sales/pages/building_height_class_spec.rb | 34 +++++++++++++++++ .../questions/building_height_class_spec.rb | 37 +++++++++++++++++++ .../subsections/property_information_spec.rb | 35 ++++++++++++++++++ .../sales/year2026/row_parser_spec.rb | 1 + 5 files changed, 108 insertions(+) create mode 100644 spec/models/form/sales/pages/building_height_class_spec.rb create mode 100644 spec/models/form/sales/questions/building_height_class_spec.rb diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index b98cc6f75..d2ad621b0 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -90,6 +90,7 @@ FactoryBot.define do buy1livein { 1 } relat2 { "P" } proptype { 1 } + buildheightclass { 2 } age2_known { 0 } age2 { Faker::Number.within(range: 25..45) } builtype { 1 } diff --git a/spec/models/form/sales/pages/building_height_class_spec.rb b/spec/models/form/sales/pages/building_height_class_spec.rb new file mode 100644 index 000000000..d07069805 --- /dev/null +++ b/spec/models/form/sales/pages/building_height_class_spec.rb @@ -0,0 +1,34 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::BuildingHeightClass, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2026, 4, 1))) } + let(:sales_log) { FactoryBot.create(:sales_log, :completed) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[buildheightclass]) + end + + it "has the correct id" do + expect(page.id).to eq("building_height_class") + end + + it "has the correct description" do + expect(page.description).to be_nil + end + + it "has the correct depends_on" do + expect(page.depends_on).to eq([ + { "proptype" => 1 }, + { "proptype" => 2 }, + { "proptype" => 9 }, + ]) + end +end diff --git a/spec/models/form/sales/questions/building_height_class_spec.rb b/spec/models/form/sales/questions/building_height_class_spec.rb new file mode 100644 index 000000000..4f0f1b0c7 --- /dev/null +++ b/spec/models/form/sales/questions/building_height_class_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::BuildingHeightClass, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2026, 4, 1)))) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("buildheightclass") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "is not marked as derived" do + expect(question.derived?(nil)).to be false + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "High-rise" }, + "2" => { "value" => "Low-rise" }, + "3" => { "value" => "Don't know" }, + }) + end + + it "has the correct question_number" do + expect(question.question_number).to eq(17) + end +end diff --git a/spec/models/form/sales/subsections/property_information_spec.rb b/spec/models/form/sales/subsections/property_information_spec.rb index 7585d290a..59ee7d6ef 100644 --- a/spec/models/form/sales/subsections/property_information_spec.rb +++ b/spec/models/form/sales/subsections/property_information_spec.rb @@ -16,6 +16,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do before do allow(form).to receive(:start_year_2024_or_later?).and_return(false) allow(form).to receive(:start_year_2025_or_later?).and_return(false) + allow(form).to receive(:start_year_2026_or_later?).and_return(false) end context "when 2023" do @@ -50,6 +51,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do before do allow(form).to receive(:start_year_2024_or_later?).and_return(true) allow(form).to receive(:start_year_2025_or_later?).and_return(false) + allow(form).to receive(:start_year_2026_or_later?).and_return(false) end it "has correct pages" do @@ -80,6 +82,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do before do allow(form).to receive(:start_year_2024_or_later?).and_return(true) allow(form).to receive(:start_year_2025_or_later?).and_return(true) + allow(form).to receive(:start_year_2026_or_later?).and_return(false) end it "has correct pages" do @@ -103,6 +106,38 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do ) end end + + context "when 2026" do + let(:start_date) { Time.utc(2026, 2, 8) } + + before do + allow(form).to receive(:start_year_2024_or_later?).and_return(true) + allow(form).to receive(:start_year_2025_or_later?).and_return(true) + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "has correct pages" do + expect(property_information.pages.map(&:id)).to eq( + %w[ + address_search + address + property_local_authority + local_authority_buyer_1_income_max_value_check + local_authority_buyer_2_income_max_value_check + local_authority_combined_income_max_value_check + about_price_la_value_check + property_unit_type + building_height_class + property_number_of_bedrooms + about_price_bedrooms_value_check + monthly_charges_property_type_value_check + percentage_discount_proptype_value_check + property_building_type + property_wheelchair_accessible + ], + ) + end + end end it "has the correct id" do diff --git a/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb index f9fb2aa2c..a3e47ae9e 100644 --- a/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb @@ -118,6 +118,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do field_125: "M", field_126: "R", field_127: "R", + field_128: "1", } end