From 2db9d9f9f33445be3a40400f924f31c70674cf4a Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Tue, 24 Jan 2023 18:09:48 +0000 Subject: [PATCH] add mortgage to derived variables so that mortgage value is set to 0 if a mortgage is not being used in the sale --- app/models/derived_variables/sales_log_variables.rb | 3 +++ app/models/sales_log.rb | 5 ----- spec/models/sales_log_spec.rb | 6 ++++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index 245361a80..16fb6ebd7 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -15,6 +15,9 @@ module DerivedVariables::SalesLogVariables if mscharge_known.present? && mscharge_known.zero? self.mscharge = 0 end + if mortgage_not_used? + self.mortgage = 0 + end self.pcode1, self.pcode2 = postcode_full.split(" ") if postcode_full.present? self.totchild = total_child self.totadult = total_adult + total_elder diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 80d692fff..5d97df33e 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -28,7 +28,6 @@ class SalesLog < Log before_validation :process_previous_postcode_changes!, if: :ppostcode_full_changed? before_validation :reset_location_fields!, unless: :postcode_known? before_validation :reset_previous_location_fields!, unless: :previous_postcode_known? - before_validation :set_mortgage_value_zero, if: :mortgage_not_used? before_validation :set_derived_fields! scope :filter_by_year, ->(year) { where(saledate: Time.zone.local(year.to_i, 4, 1)...Time.zone.local(year.to_i + 1, 4, 1)) } @@ -187,10 +186,6 @@ class SalesLog < Log mortgageused == 2 end - def set_mortgage_value_zero - self.mortgage = 0 - end - def process_postcode_changes! self.postcode_full = upcase_and_remove_whitespace(postcode_full) process_postcode(postcode_full, "pcodenk", "is_la_inferred", "la") diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index 4acc68380..142e71665 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -140,6 +140,12 @@ RSpec.describe SalesLog, type: :model do expect(record_from_db["pcode1"]).to eq("W6") expect(record_from_db["pcode2"]).to eq("0SP") end + + it "derives a mortgage value of 0 when mortgage is not used" do + sales_log.update!(mortgageused: 2) + record_from_db = ActiveRecord::Base.connection.execute("select mortgage from sales_logs where id=#{sales_log.id}").to_a[0] + expect(record_from_db["mortgage"]).to eq(0.0) + end end context "when saving addresses" do