From 5ce2d0cb4764dd824ea406d8dce8958adf55a15f Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Wed, 11 Mar 2026 17:43:28 +0000 Subject: [PATCH] =?UTF-8?q?CLDC-4164,=20CLDC-4165:=20Update=20purchase=20p?= =?UTF-8?q?rice=20minimum=20to=20=C2=A315,000=20for=202026=20onwards=20(#3?= =?UTF-8?q?198)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CLDC-4164: Update purchase price minimum to £15,000 for 2026 onwards * CLDC-4164: Apply £15,000 minimum validation to shared ownership purchase price * CLDC-4164: Update tests * fixup! CLDC-4164: Update tests add min tests for 25 and 26 --- .../form/sales/questions/purchase_price.rb | 2 +- app/models/form/sales/questions/value.rb | 2 +- .../purchase_price_outright_ownership_spec.rb | 2 +- .../form/sales/pages/purchase_price_spec.rb | 2 +- .../pages/value_shared_ownership_spec.rb | 2 +- .../sales/questions/purchase_price_spec.rb | 27 ++++++++++++++++--- .../models/form/sales/questions/value_spec.rb | 23 +++++++++++++--- 7 files changed, 49 insertions(+), 11 deletions(-) diff --git a/app/models/form/sales/questions/purchase_price.rb b/app/models/form/sales/questions/purchase_price.rb index d37d549ce..fbd3ea7a5 100644 --- a/app/models/form/sales/questions/purchase_price.rb +++ b/app/models/form/sales/questions/purchase_price.rb @@ -3,7 +3,7 @@ class Form::Sales::Questions::PurchasePrice < ::Form::Question super(id, hsh, page) @id = "value" @type = "numeric" - @min = 0 + @min = form.start_year_2026_or_later? ? 15_000 : 0 @step = 0.01 @width = 5 @prefix = "£" diff --git a/app/models/form/sales/questions/value.rb b/app/models/form/sales/questions/value.rb index c8b9cadd3..a1b4a155a 100644 --- a/app/models/form/sales/questions/value.rb +++ b/app/models/form/sales/questions/value.rb @@ -4,7 +4,7 @@ class Form::Sales::Questions::Value < ::Form::Question @id = "value" @copy_key = form.start_year_2025_or_later? ? "sales.sale_information.value.#{page.id}" : "sales.sale_information.value" @type = "numeric" - @min = 0 + @min = form.start_year_2026_or_later? ? 15_000 : 0 @step = 1 @width = 5 @prefix = "£" diff --git a/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb b/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb index 27ab0b422..c9bff2f95 100644 --- a/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb +++ b/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Pages::PurchasePriceOutrightOwnership, type: :model let(:page_id) { "purchase_price" } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1))) } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1), start_year_2026_or_later?: false)) } it "has correct subsection" do expect(page.subsection).to eq(subsection) diff --git a/spec/models/form/sales/pages/purchase_price_spec.rb b/spec/models/form/sales/pages/purchase_price_spec.rb index ad857ee9f..f8bbde0e7 100644 --- a/spec/models/form/sales/pages/purchase_price_spec.rb +++ b/spec/models/form/sales/pages/purchase_price_spec.rb @@ -8,7 +8,7 @@ RSpec.describe Form::Sales::Pages::PurchasePrice, type: :model do let(:subsection) { instance_double(Form::Subsection) } before do - allow(subsection).to receive(:form).and_return(instance_double(Form, start_year_2024_or_later?: false, start_date: Time.zone.local(2023, 4, 1))) + allow(subsection).to receive(:form).and_return(instance_double(Form, start_year_2024_or_later?: false, start_year_2026_or_later?: false, start_date: Time.zone.local(2023, 4, 1))) end it "has correct subsection" do diff --git a/spec/models/form/sales/pages/value_shared_ownership_spec.rb b/spec/models/form/sales/pages/value_shared_ownership_spec.rb index 579084b35..e7e709d28 100644 --- a/spec/models/form/sales/pages/value_shared_ownership_spec.rb +++ b/spec/models/form/sales/pages/value_shared_ownership_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Pages::ValueSharedOwnership, type: :model do let(:page_id) { "value_shared_ownership" } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)), id: "shared_ownership") } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1), start_year_2026_or_later?: false), id: "shared_ownership") } before do allow(page.subsection.form).to receive(:start_year_2025_or_later?).and_return(false) diff --git a/spec/models/form/sales/questions/purchase_price_spec.rb b/spec/models/form/sales/questions/purchase_price_spec.rb index c3d2999a0..6790b4a35 100644 --- a/spec/models/form/sales/questions/purchase_price_spec.rb +++ b/spec/models/form/sales/questions/purchase_price_spec.rb @@ -1,11 +1,15 @@ require "rails_helper" RSpec.describe Form::Sales::Questions::PurchasePrice, type: :model do + include CollectionTimeHelper + subject(:question) { described_class.new(question_id, question_definition, page, ownershipsch: 1) } 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(2023, 4, 1)))) } + let(:start_year) { current_collection_start_year } + let(:start_year_2026_or_later?) { false } + let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: collection_start_date_for_year(start_year), start_year_2026_or_later?: start_year_2026_or_later?))) } it "has correct page" do expect(question.page).to eq(page) @@ -30,6 +34,8 @@ RSpec.describe Form::Sales::Questions::PurchasePrice, type: :model do context "when discounted ownership scheme" do subject(:question) { described_class.new(question_id, question_definition, page, ownershipsch: 2) } + let(:start_year) { 2023 } + it "has the correct question_number" do expect(question.question_number).to eq(100) end @@ -38,6 +44,8 @@ RSpec.describe Form::Sales::Questions::PurchasePrice, type: :model do context "when outright sale" do subject(:question) { described_class.new(question_id, question_definition, page, ownershipsch: 3) } + let(:start_year) { 2023 } + it "has the correct question_number" do expect(question.question_number).to eq(110) end @@ -51,7 +59,20 @@ RSpec.describe Form::Sales::Questions::PurchasePrice, type: :model do expect(question.prefix).to eq("£") end - it "has correct min" do - expect(question.min).to eq(0) + context "with year 2025", metadata: { year: 25 } do + let(:start_year) { 2025 } + + it "has correct min" do + expect(question.min).to eq(0) + end + end + + context "with year 2026", metadata: { year: 26 } do + let(:start_year) { 2026 } + let(:start_year_2026_or_later?) { true } + + it "has correct min" do + expect(question.min).to eq(15_000) + end end end diff --git a/spec/models/form/sales/questions/value_spec.rb b/spec/models/form/sales/questions/value_spec.rb index bed4c7f96..2ebbf6d89 100644 --- a/spec/models/form/sales/questions/value_spec.rb +++ b/spec/models/form/sales/questions/value_spec.rb @@ -1,11 +1,15 @@ require "rails_helper" RSpec.describe Form::Sales::Questions::Value, type: :model do + include CollectionTimeHelper + subject(:question) { described_class.new(question_id, question_definition, page) } let(:question_id) { nil } let(:question_definition) { nil } - let(:page) { instance_double(Form::Page, id: "value_shared_ownership", subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)), id: "shared_ownership")) } + let(:start_year) { current_collection_start_year } + let(:start_year_2026_or_later?) { false } + let(:page) { instance_double(Form::Page, id: "value_shared_ownership", subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: collection_start_date_for_year(start_year), start_year_2026_or_later?: start_year_2026_or_later?), id: "shared_ownership")) } before do allow(page.subsection.form).to receive(:start_year_2025_or_later?).and_return(false) @@ -35,7 +39,20 @@ RSpec.describe Form::Sales::Questions::Value, type: :model do expect(question.prefix).to eq("£") end - it "has correct min" do - expect(question.min).to eq(0) + context "with year 2025", metadata: { year: 25 } do + let(:start_year) { 2025 } + + it "has correct min" do + expect(question.min).to eq(0) + end + end + + context "with year 2026", metadata: { year: 26 } do + let(:start_year) { 2026 } + let(:start_year_2026_or_later?) { true } + + it "has correct min" do + expect(question.min).to eq(15_000) + end end end