diff --git a/app/models/derived_variables/lettings_log_variables.rb b/app/models/derived_variables/lettings_log_variables.rb index 56b47e9ad..1de14c866 100644 --- a/app/models/derived_variables/lettings_log_variables.rb +++ b/app/models/derived_variables/lettings_log_variables.rb @@ -113,9 +113,17 @@ module DerivedVariables::LettingsLogVariables self.uprn = nil end - if uprn_confirmed&.zero? + if uprn_known == 1 && uprn_confirmed&.zero? self.uprn = nil self.uprn_known = 0 + self.uprn_confirmed = nil + self.address_line1 = nil + self.address_line2 = nil + self.town_or_city = nil + self.county = nil + self.postcode_known = nil + self.postcode_full = nil + self.la = nil end self.nationality_all = nationality_all_group if nationality_uk_or_prefers_not_to_say? diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index cb49b6cc2..05210830b 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -45,9 +45,17 @@ module DerivedVariables::SalesLogVariables self.uprn = nil end - if uprn_confirmed&.zero? + if uprn_known == 1 && uprn_confirmed&.zero? self.uprn = nil self.uprn_known = 0 + self.uprn_confirmed = nil + self.address_line1 = nil + self.address_line2 = nil + self.town_or_city = nil + self.county = nil + self.pcodenk = nil + self.postcode_full = nil + self.la = nil end self.nationality_all = nationality_all_group if nationality_uk_or_prefers_not_to_say? diff --git a/spec/shared/shared_examples_for_derived_fields.rb b/spec/shared/shared_examples_for_derived_fields.rb index 6382ef4f4..3e6b685df 100644 --- a/spec/shared/shared_examples_for_derived_fields.rb +++ b/spec/shared/shared_examples_for_derived_fields.rb @@ -14,4 +14,22 @@ RSpec.shared_examples "shared examples for derived fields" do |log_type| expect { log.set_derived_fields! }.not_to change(log, :ethnic) end end + + context "when uprn is not confirmed" do + it "derives other uprn fields correctly" do + log = FactoryBot.build(log_type, uprn_known: 1, uprn: 1, uprn_confirmed: 0) + + expect { log.set_derived_fields! }.to change(log, :uprn_known).from(1).to(0) + .and change(log, :uprn).from("1").to(nil) + .and change(log, :uprn_confirmed).from(0).to(nil) + end + + it "does not affect older logs with uprn_confirmed == 0" do + log = FactoryBot.build(log_type, uprn_known: 0, uprn: nil, uprn_confirmed: 0) + + expect { log.set_derived_fields! }.to not_change(log, :uprn_known) + .and not_change(log, :uprn) + .and not_change(log, :uprn_confirmed) + end + end end