From d4a29a15833700571fb5908fd215133f4e6935a8 Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis Date: Tue, 17 Feb 2026 17:22:29 +0000 Subject: [PATCH] CLDc-4174: update question specs --- .../questions/has_service_charge_spec.rb | 50 +++++++++++++++++-- .../sales/questions/service_charge_spec.rb | 47 ++++++++++++++++- 2 files changed, 92 insertions(+), 5 deletions(-) diff --git a/spec/models/form/sales/questions/has_service_charge_spec.rb b/spec/models/form/sales/questions/has_service_charge_spec.rb index bf0bd9d25..d8a8b2132 100644 --- a/spec/models/form/sales/questions/has_service_charge_spec.rb +++ b/spec/models/form/sales/questions/has_service_charge_spec.rb @@ -1,12 +1,15 @@ require "rails_helper" RSpec.describe Form::Sales::Questions::HasServiceCharge, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } + subject(:question) { described_class.new(question_id, question_definition, page, staircasing:) } - let(:form) { instance_double(Form, start_date: Time.zone.local(2025, 4, 4)) } let(:question_id) { nil } let(:question_definition) { nil } - let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, id: "shared_ownership", form:)) } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } + let(:page) { instance_double(Form::Page, subsection:) } + let(:start_date) { Time.utc(2025, 5, 1) } + let(:staircasing) { false } + it "has correct page" do expect(question.page).to eq(page) @@ -46,4 +49,45 @@ RSpec.describe Form::Sales::Questions::HasServiceCharge, type: :model do ], }) end + + context "with 2025/26 form" do + let(:start_date) { Time.utc(2025, 4, 1) } + + before do + allow(subsection.form).to receive(:start_year_2025_or_later?).and_return(true) + end + + context "when not staircasing" do + let(:staircasing) { false } + + it "has the correct question number" do + expect(question.question_number).to eq(88) + end + end + end + + context "with 2026/27 form" do + let(:start_date) { Time.utc(2026, 4, 1) } + + before do + allow(subsection.form).to receive(:start_year_2026_or_later?).and_return(true) + end + + context "when staircasing" do + let(:staircasing) { true } + + it "has the correct question number" do + expect(question.question_number).to eq(0) + end + end + + context "when not staircasing" do + let(:staircasing) { false } + + it "has the correct question number" do + expect(question.question_number).to eq(0) + end + end + end + end diff --git a/spec/models/form/sales/questions/service_charge_spec.rb b/spec/models/form/sales/questions/service_charge_spec.rb index 56dee01cf..21104d2b5 100644 --- a/spec/models/form/sales/questions/service_charge_spec.rb +++ b/spec/models/form/sales/questions/service_charge_spec.rb @@ -1,11 +1,14 @@ require "rails_helper" RSpec.describe Form::Sales::Questions::ServiceCharge, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } + subject(:question) { described_class.new(question_id, question_definition, page, staircasing:) } 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(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } + let(:page) { instance_double(Form::Page, subsection:) } + let(:start_date) { Time.utc(2023, 4, 1) } + let(:staircasing) { false } it "has correct page" do expect(question.page).to eq(page) @@ -34,4 +37,44 @@ RSpec.describe Form::Sales::Questions::ServiceCharge, type: :model do it "has the correct prefix" do expect(question.prefix).to eq("£") end + + context "with 2025/26 form" do + let(:start_date) { Time.utc(2025, 4, 1) } + + before do + allow(subsection.form).to receive(:start_year_2025_or_later?).and_return(true) + end + + context "when not staircasing" do + let(:staircasing) { false } + + it "has the correct question number" do + expect(question.question_number).to eq(88) + end + end + end + + context "with 2026/27 form" do + let(:start_date) { Time.utc(2026, 4, 1) } + + before do + allow(subsection.form).to receive(:start_year_2026_or_later?).and_return(true) + end + + context "when staircasing" do + let(:staircasing) { true } + + it "has the correct question number" do + expect(question.question_number).to eq(0) + end + end + + context "when not staircasing" do + let(:staircasing) { false } + + it "has the correct question number" do + expect(question.question_number).to eq(0) + end + end + end end