From 014172cbb6534f27d2fd1cf2804ba81d1da2ba8c Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis Date: Fri, 11 Sep 2026 12:21:13 +0100 Subject: [PATCH 1/2] CLDC-4462: respond to PR comments --- .../clear_confidential_address_data.rake | 21 +-------- .../clear_confidential_address_data_spec.rb | 46 +++++++++++-------- 2 files changed, 27 insertions(+), 40 deletions(-) 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 From 64c1bc8a6ea864fa9bfde96d5e6f3f51691a4821 Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis <94526761+natdeanlewissoftwire@users.noreply.github.com> Date: Fri, 11 Sep 2026 12:22:23 +0100 Subject: [PATCH 2/2] CLDC-4513: update rubyzip and patch breaking changes (#3381) --- Gemfile.lock | 9 ++++++--- app/services/exports/xml_export_service.rb | 2 +- spec/services/storage/archive_service_spec.rb | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 09435bd49..e290f5744 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -433,9 +433,12 @@ GEM actionpack (>= 7.0) railties (>= 7.0) rexml (3.4.4) - roo (2.10.1) + roo (3.0.0) + base64 (~> 0.2) + csv (~> 3) + logger (~> 1) nokogiri (~> 1) - rubyzip (>= 1.3.0, < 3.0.0) + rubyzip (>= 3.0.0, < 4.0.0) rotp (6.3.0) rspec-core (3.13.0) rspec-support (~> 3.13.0) @@ -499,7 +502,7 @@ GEM faraday-multipart (>= 1) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (3.6.0) securerandom (0.4.1) selenium-webdriver (4.43.0) base64 (~> 0.2) diff --git a/app/services/exports/xml_export_service.rb b/app/services/exports/xml_export_service.rb index 703d94f7d..486b788af 100644 --- a/app/services/exports/xml_export_service.rb +++ b/app/services/exports/xml_export_service.rb @@ -48,7 +48,7 @@ module Exports @logger.info("Creating #{archive} - #{initial_count} resources") return {} if initial_count.zero? - zip_file = Zip::File.open_buffer(StringIO.new) + zip_file = Zip::File.open_buffer(StringIO.new, create: true) part_number = 1 last_processed_marker = nil diff --git a/spec/services/storage/archive_service_spec.rb b/spec/services/storage/archive_service_spec.rb index 52808262f..6c0e54001 100644 --- a/spec/services/storage/archive_service_spec.rb +++ b/spec/services/storage/archive_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Storage::ArchiveService do file end let(:archive_content) do - zip_file = Zip::File.open_buffer(StringIO.new) + zip_file = Zip::File.open_buffer(StringIO.new, create: true) zip_file.mkdir(compressed_folder) zip_file.add(compressed_filepath, compressed_file) zip_file.write_buffer @@ -51,7 +51,7 @@ RSpec.describe Storage::ArchiveService do it "raises an error if the file exists but is too large" do archive = archive_service.instance_variable_get(:@archive) - allow(archive).to receive(:get_entry).and_return(Zip::Entry.new(nil, "", nil, nil, nil, nil, nil, 100_000_000, nil)) + allow(archive).to receive(:get_entry).and_return(Zip::Entry.new(nil, "", size: 100_000_000)) expect { archive_service.get_file_io(compressed_filepath) } .to raise_error(RuntimeError, "File too large to be extracted")