From d95e08cca24adf68d707951e5a133196056a4846 Mon Sep 17 00:00:00 2001 From: Arthur Campbell <51094020+arfacamble@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:58:09 +0100 Subject: [PATCH] Cldc 3492 oustide rent range soft validation not clearing for bedsit (#2473) * mark the beds question as derived when the log is a bedsit to stop it from being cleared * delete spec file not testing anything worthwhile --- app/models/form/lettings/questions/beds.rb | 4 + .../pages/property_number_of_bedrooms_spec.rb | 33 -------- .../form/lettings/questions/beds_spec.rb | 78 ++++++++----------- 3 files changed, 35 insertions(+), 80 deletions(-) delete mode 100644 spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb diff --git a/app/models/form/lettings/questions/beds.rb b/app/models/form/lettings/questions/beds.rb index 87847d512..8c0399a61 100644 --- a/app/models/form/lettings/questions/beds.rb +++ b/app/models/form/lettings/questions/beds.rb @@ -13,6 +13,10 @@ class Form::Lettings::Questions::Beds < ::Form::Question @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end + def derived?(log) + log.is_bedsit? + end + def hint_text form.start_year_after_2024? ? "If shared accommodation, enter the number of bedrooms occupied by this household." : "If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom." end diff --git a/spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb b/spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb deleted file mode 100644 index ce5f10617..000000000 --- a/spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Lettings::Pages::PropertyNumberOfBedrooms, 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(2024, 4, 1))) } - - 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[beds]) - end - - it "has the correct id" do - expect(page.id).to eq("property_number_of_bedrooms") - end - - it "has the correct header" do - expect(page.header).to be_nil - 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([{ "is_general_needs?" => true, "is_beds_inferred?" => false }]) - end -end diff --git a/spec/models/form/lettings/questions/beds_spec.rb b/spec/models/form/lettings/questions/beds_spec.rb index 2c68cabfe..e594a4140 100644 --- a/spec/models/form/lettings/questions/beds_spec.rb +++ b/spec/models/form/lettings/questions/beds_spec.rb @@ -1,65 +1,49 @@ require "rails_helper" RSpec.describe Form::Lettings::Questions::Beds, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } + subject(:question) { described_class.new(nil, nil, page) } - let(:question_id) { nil } - let(:question_definition) { nil } - let(:page) { instance_double(Form::Page) } - let(:subsection) { instance_double(Form::Subsection) } + let(:page) { instance_double(Form::Page, subsection:) } + let(:subsection) { instance_double(Form::Subsection, form:) } let(:form) { instance_double(Form, start_date: Time.zone.local(2023, 4, 1)) } - before do - allow(form).to receive(:start_year_after_2024?).and_return(false) - allow(page).to receive(:subsection).and_return(subsection) - allow(subsection).to receive(:form).and_return(form) - end - - it "has correct page" do - expect(question.page).to eq(page) - end - - it "has the correct id" do - expect(question.id).to eq("beds") - end - - it "has the correct header" do - expect(question.header).to eq("How many bedrooms does the property have?") - end - - it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Number of bedrooms") - end + describe "the hint text" do + context "when the start date is before 24/25" do + before do + allow(form).to receive(:start_year_after_2024?).and_return false + end - it "has the correct type" do - expect(question.type).to eq("numeric") - end + it "has the correct hint_text" do + expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom.") + end + end - it "is not marked as derived" do - expect(question.derived?(nil)).to be false - end + context "when the start date is 24/25 or after" do + before do + allow(form).to receive(:start_year_after_2024?).and_return true + end - it "has the correct min" do - expect(question.min).to eq(1) + it "has the correct hint_text" do + expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household.") + end + end end - it "has the correct max" do - expect(question.max).to eq(12) - end + describe "whether the field is derived" do + context "when the log is a bedsit" do + let(:log) { build(:lettings_log, unittype_gn: 2) } - context "with 2023/24 form" do - it "has the correct hint_text" do - expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom.") + it "is not marked as derived" do + expect(question.derived?(log)).to be true + end end - end - context "with 2024/25 form" do - before do - allow(form).to receive(:start_year_after_2024?).and_return(true) - end + context "when the log is not a bedsit" do + let(:log) { build(:lettings_log, unittype_gn: 9) } - it "has the correct hint_text" do - expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household.") + it "is not marked as derived" do + expect(question.derived?(log)).to be false + end end end end