From 07043f59b8874ed934ceb9214d466ec15f8b7867 Mon Sep 17 00:00:00 2001 From: Jack <113976590+bibblobcode@users.noreply.github.com> Date: Tue, 4 Apr 2023 09:21:26 +0100 Subject: [PATCH 1/2] LaSaleRange validations bug (#1481) --- app/models/la_sale_range.rb | 1 + app/models/sales_log.rb | 4 +++ .../validations/sales/soft_validations.rb | 6 ++++- app/models/validations/soft_validations.rb | 7 ++++- spec/models/lettings_log_spec.rb | 26 +++++++++++++++++++ spec/models/sales_log_spec.rb | 26 +++++++++++++++++++ 6 files changed, 68 insertions(+), 2 deletions(-) diff --git a/app/models/la_sale_range.rb b/app/models/la_sale_range.rb index 55cdc1bf6..fbe7fbf2d 100644 --- a/app/models/la_sale_range.rb +++ b/app/models/la_sale_range.rb @@ -1,2 +1,3 @@ class LaSaleRange < ApplicationRecord + MAX_BEDS = 4 end diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 721209ee9..1cfa91acb 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -353,4 +353,8 @@ class SalesLog < Log mortgage_amount = mortgage || 0 mortgage_amount + deposit + grant_amount end + + def beds_for_la_sale_range + beds.nil? ? nil : [beds, LaSaleRange::MAX_BEDS].min + end end diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index 886716343..d72118d05 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -126,6 +126,10 @@ module Validations::Sales::SoftValidations private def sale_range - LaSaleRange.find_by(start_year: collection_start_year, la:, bedrooms: beds) + LaSaleRange.find_by( + start_year: collection_start_year, + la:, + bedrooms: beds_for_la_sale_range, + ) end end diff --git a/app/models/validations/soft_validations.rb b/app/models/validations/soft_validations.rb index fbc5ab3b9..cfcfb643b 100644 --- a/app/models/validations/soft_validations.rb +++ b/app/models/validations/soft_validations.rb @@ -28,7 +28,12 @@ module Validations::SoftValidations def rent_in_soft_min_range? return unless brent && weekly_value(brent) && startdate - rent_range = LaRentRange.find_by(start_year: collection_start_year, la:, beds: beds_for_la_rent_range, lettype: get_lettype) + rent_range = LaRentRange.find_by( + start_year: collection_start_year, + la:, + beds: beds_for_la_rent_range, + lettype: get_lettype, + ) rent_range.present? && weekly_value(brent).between?(rent_range.hard_min, rent_range.soft_min) end diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index ca4ff7e85..2358317af 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -3086,5 +3086,31 @@ RSpec.describe LettingsLog do end end end + + describe "#beds_for_la_rent_range" do + context "when beds nil" do + let(:lettings_log) { build(:lettings_log, beds: nil) } + + it "returns nil" do + expect(lettings_log.beds_for_la_rent_range).to be_nil + end + end + + context "when beds <= 4" do + let(:lettings_log) { build(:lettings_log, beds: 4) } + + it "returns number of beds" do + expect(lettings_log.beds_for_la_rent_range).to eq(4) + end + end + + context "when beds > 4" do + let(:lettings_log) { build(:lettings_log, beds: 40) } + + it "returns max number of beds" do + expect(lettings_log.beds_for_la_rent_range).to eq(4) + end + end + end end # rubocop:enable RSpec/AnyInstance diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index 5e1320a67..ca72794a5 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -579,5 +579,31 @@ RSpec.describe SalesLog, type: :model do end end end + + describe "#beds_for_la_sale_range" do + context "when beds nil" do + let(:sales_log) { build(:sales_log, beds: nil) } + + it "returns nil" do + expect(sales_log.beds_for_la_sale_range).to be_nil + end + end + + context "when beds <= 4" do + let(:sales_log) { build(:sales_log, beds: 4) } + + it "returns number of beds" do + expect(sales_log.beds_for_la_sale_range).to eq(4) + end + end + + context "when beds > 4" do + let(:sales_log) { build(:sales_log, beds: 40) } + + it "returns max number of beds" do + expect(sales_log.beds_for_la_sale_range).to eq(4) + end + end + end end # rubocop:enable RSpec/AnyInstance From 54476a5c7c7d244848a85d3ecbbf3b5b82d58377 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:16:12 +0100 Subject: [PATCH 2/2] Don't explicitly hide la and property information questions from CYA (#1510) --- .../form/lettings/questions/address_line1.rb | 9 ------ app/models/form/lettings/questions/la.rb | 4 --- .../models/form/lettings/questions/la_spec.rb | 30 ------------------- 3 files changed, 43 deletions(-) diff --git a/app/models/form/lettings/questions/address_line1.rb b/app/models/form/lettings/questions/address_line1.rb index b3288c82c..4c8b4151b 100644 --- a/app/models/form/lettings/questions/address_line1.rb +++ b/app/models/form/lettings/questions/address_line1.rb @@ -9,15 +9,6 @@ class Form::Lettings::Questions::AddressLine1 < ::Form::Question @check_answer_label = "Q12 - Address" end - def hidden_in_check_answers?(log, _current_user = nil) - return true if log.uprn_known.nil? - return false if log.uprn_known&.zero? - return true if log.uprn_confirmed.nil? && log.uprn.present? - return true if log.uprn_known == 1 && log.uprn.blank? - - log.uprn_confirmed == 1 - end - def answer_label(log, _current_user = nil) [ log.address_line1, diff --git a/app/models/form/lettings/questions/la.rb b/app/models/form/lettings/questions/la.rb index b70e7590b..3cafda054 100644 --- a/app/models/form/lettings/questions/la.rb +++ b/app/models/form/lettings/questions/la.rb @@ -13,8 +13,4 @@ class Form::Lettings::Questions::La < ::Form::Question def answer_options { "" => "Select an option" }.merge(LocalAuthority.active(form.start_date).england.map { |la| [la.code, la.name] }.to_h) end - - def hidden_in_check_answers?(log, _current_user = nil) - log.startdate && log.startdate.year >= 2023 && log.is_la_inferred? - end end diff --git a/spec/models/form/lettings/questions/la_spec.rb b/spec/models/form/lettings/questions/la_spec.rb index 8f0008d7e..5f8d650f4 100644 --- a/spec/models/form/lettings/questions/la_spec.rb +++ b/spec/models/form/lettings/questions/la_spec.rb @@ -310,34 +310,4 @@ RSpec.describe Form::Lettings::Questions::La, type: :model do "E06000065" => "North Yorkshire", }) end - - describe "has the correct hidden_in_check_answers" do - context "when saledate.year before 2023" do - let(:log) { build(:lettings_log, startdate: Time.zone.parse("2022-07-01")) } - - it "returns false" do - expect(question.hidden_in_check_answers?(log)).to eq(false) - end - end - - context "when saledate.year >= 2023" do - let(:log) { build(:lettings_log, startdate: Time.zone.parse("2023-07-01")) } - - it "returns true" do - expect(question.hidden_in_check_answers?(log)).to eq(false) - end - end - - context "when saledate.year >= 2023 and la inferred" do - let(:log) { build(:lettings_log, startdate: Time.zone.parse("2023-07-01")) } - - before do - allow(log).to receive(:is_la_inferred?).and_return(true) - end - - it "returns true" do - expect(question.hidden_in_check_answers?(log)).to eq(true) - end - end - end end