diff --git a/lib/tasks/clear_confidential_address_data.rake b/lib/tasks/clear_confidential_address_data.rake index eff626728..3ef243cb7 100644 --- a/lib/tasks/clear_confidential_address_data.rake +++ b/lib/tasks/clear_confidential_address_data.rake @@ -41,26 +41,7 @@ task clear_confidential_address_data: :environment do scope.find_each do |log| original_status = log.status - log.uprn = nil - log.uprn_known = nil - log.uprn_confirmed = nil - log.uprn_selection = nil - log.address_line1 = nil - log.address_line2 = nil - log.town_or_city = nil - log.county = nil - log.postcode_full = nil - log.postcode_known = nil - log.address_line1_input = nil - log.postcode_full_input = nil - log.address_line1_as_entered = nil - log.address_line2_as_entered = nil - log.town_or_city_as_entered = nil - log.county_as_entered = nil - log.postcode_full_as_entered = nil - log.la_as_entered = nil - log.address_search_value_check = nil - log.la = nil + fields_present_scope.each { |field| log[field] = nil } log.is_la_inferred = log.la.present? if log.save(validate: false) diff --git a/spec/lib/tasks/clear_confidential_address_data_spec.rb b/spec/lib/tasks/clear_confidential_address_data_spec.rb index 65639f0cd..56efa77d9 100644 --- a/spec/lib/tasks/clear_confidential_address_data_spec.rb +++ b/spec/lib/tasks/clear_confidential_address_data_spec.rb @@ -66,6 +66,20 @@ RSpec.describe "clear_confidential_address_data" do expect(log[:la]).to be_nil expect(log.is_la_inferred).to be true end + + it "does not affect the scheme or location associations" do + task.invoke + log.reload + + expect(log.scheme_id).to eq(scheme.id) + expect(log.location_id).to eq(location.id) + end + + it "is idempotent" do + task.invoke + task.reenable + expect { task.invoke }.not_to(change { log.reload.updated_at }) + end end context "when the scheme's location has no resolvable local authority" do @@ -88,7 +102,12 @@ RSpec.describe "clear_confidential_address_data" do it "does not clear the address fields" do task.invoke - expect(log.reload.address_line1).to eq("1 Secret Street") + log.reload + + expect(log.address_line1).to eq("1 Secret Street") + expect(log.town_or_city).to eq("Secretville") + expect(log.uprn).to eq("123456789012") + expect(log.postcode_known).to eq(1) end end @@ -97,7 +116,12 @@ RSpec.describe "clear_confidential_address_data" do it "does not clear the address fields" do task.invoke - expect(log.reload.address_line1).to eq("1 Secret Street") + log.reload + + expect(log.address_line1).to eq("1 Secret Street") + expect(log.town_or_city).to eq("Secretville") + expect(log.uprn).to eq("123456789012") + expect(log.postcode_known).to eq(1) end end @@ -119,23 +143,5 @@ RSpec.describe "clear_confidential_address_data" do expect { task.invoke }.not_to(change { log.reload.updated_at }) end end - - it "does not affect the scheme or location associations" do - log = create_log_with_address_data(scheme:, location:, startdate: Time.zone.local(2026, 5, 1)) - - task.invoke - log.reload - - expect(log.scheme_id).to eq(scheme.id) - expect(log.location_id).to eq(location.id) - end - - it "is idempotent" do - log = create_log_with_address_data(scheme:, location:, startdate: Time.zone.local(2026, 5, 1)) - - task.invoke - task.reenable - expect { task.invoke }.not_to(change { log.reload.updated_at }) - end end end