From ac17087728029236982e8aaadf5d27ad904b0cf2 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Wed, 10 Dec 2025 16:17:34 +0000 Subject: [PATCH] CLDC-3870: Ask number of bedrooms when changing answer to non bedsit (#3123) * CLDC-3870: Nil the beds question when the user changes off of bedsit this forces the user to answer it again as we previously assumed the answer to be '1' when they answered bedsit * CLDC-3870: Add tests --- .../lettings_log_variables.rb | 3 +++ .../derived_variables/sales_log_variables.rb | 3 +++ app/models/lettings_log.rb | 4 ++++ app/models/sales_log.rb | 4 ++++ .../models/lettings_log_derived_fields_spec.rb | 16 ++++++++++++++++ spec/models/sales_log_derived_fields_spec.rb | 18 ++++++++++++++++++ 6 files changed, 48 insertions(+) diff --git a/app/models/derived_variables/lettings_log_variables.rb b/app/models/derived_variables/lettings_log_variables.rb index 4666a47ae..3aae12b4c 100644 --- a/app/models/derived_variables/lettings_log_variables.rb +++ b/app/models/derived_variables/lettings_log_variables.rb @@ -71,6 +71,9 @@ module DerivedVariables::LettingsLogVariables if form.start_year_2024_or_later? && is_bedsit? self.beds = 1 end + if bedsit_changed_to_not_bedsit? # make user answer num of bedrooms again + self.beds = nil + end clear_child_ecstat_for_age_changes! child_under_16_constraints! diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index 18b26ad85..a31cfab61 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -83,6 +83,9 @@ module DerivedVariables::SalesLogVariables if form.start_year_2025_or_later? && is_bedsit? self.beds = 1 end + if bedsit_changed_to_not_bedsit? # make user answer num of bedrooms again + self.beds = nil + end self.nationality_all = nationality_all_group if nationality_uk_or_prefers_not_to_say? self.nationality_all_buyer2 = nationality_all_buyer2_group if nationality2_uk_or_prefers_not_to_say? diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index 1daf7cd9a..6b1768f11 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -399,6 +399,10 @@ class LettingsLog < Log form.start_year_2024_or_later? && is_bedsit? end + def bedsit_changed_to_not_bedsit? + unittype_gn_changed? && unittype_gn_was == 2 + end + def is_shared_housing? # 4: Shared flat or maisonette # 9: Shared house diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 0fdcf6d14..d4d23f44d 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -386,6 +386,10 @@ class SalesLog < Log form.start_year_2025_or_later? && is_bedsit? end + def bedsit_changed_to_not_bedsit? + proptype_changed? && proptype_was == 2 + end + def shared_ownership_scheme? ownershipsch == 1 end diff --git a/spec/models/lettings_log_derived_fields_spec.rb b/spec/models/lettings_log_derived_fields_spec.rb index e49e045a6..c7444a956 100644 --- a/spec/models/lettings_log_derived_fields_spec.rb +++ b/spec/models/lettings_log_derived_fields_spec.rb @@ -1232,4 +1232,20 @@ RSpec.describe LettingsLog, type: :model do expect { log.set_derived_fields! }.to not_change(log, :ecstat2) end end + + describe "deriving num of bedrooms from whether property is bedsit" do + it "sets num of bedrooms to 1 when property is a bedsit" do + log.unittype_gn = 2 + expect { log.set_derived_fields! }.to change(log, :beds).to 1 + end + + it "sets num of bedrooms to nil when property is change from a bedsit" do + log.unittype_gn = 2 + log.set_derived_fields! + log.clear_changes_information + + log.unittype_gn = 1 + expect { log.set_derived_fields! }.to change(log, :beds).to nil + end + end end diff --git a/spec/models/sales_log_derived_fields_spec.rb b/spec/models/sales_log_derived_fields_spec.rb index 7827ce282..f1be79fff 100644 --- a/spec/models/sales_log_derived_fields_spec.rb +++ b/spec/models/sales_log_derived_fields_spec.rb @@ -186,5 +186,23 @@ RSpec.describe SalesLog, type: :model do end end end + + describe "deriving num of bedrooms from whether property is bedsit" do + let(:log) { create(:sales_log, :completed) } + + it "sets num of bedrooms to 1 when property is a bedsit" do + log.proptype = 2 + expect { log.set_derived_fields! }.to change(log, :beds).to 1 + end + + it "sets num of bedrooms to nil when property is change from a bedsit" do + log.proptype = 2 + log.set_derived_fields! + log.clear_changes_information + + log.proptype = 1 + expect { log.set_derived_fields! }.to change(log, :beds).to nil + end + end end end