Fix tests after updating rubyzip

This commit is contained in:
Eugene Burmakin 2025-09-26 23:31:45 +02:00
parent 7a028cd246
commit 4287fee93d
4 changed files with 19 additions and 18 deletions

View file

@ -311,18 +311,10 @@ class Users::ExportData
private private
attr_reader :user attr_reader :user, :export_directory, :files_directory
def export_directory
@export_directory
end
def files_directory
@files_directory
end
def calculate_entity_counts def calculate_entity_counts
Rails.logger.info "Calculating entity counts for export" Rails.logger.info 'Calculating entity counts for export'
counts = { counts = {
areas: user.areas.count, areas: user.areas.count,
@ -340,15 +332,15 @@ class Users::ExportData
counts counts
end end
def create_zip_archive(export_directory, zip_file_path) def create_zip_archive(export_directory, zip_file_path)
original_compression = Zip.default_compression original_compression = Zip.default_compression
Zip.default_compression = Zip::Entry::DEFLATED Zip.default_compression = Zip::Entry::DEFLATED
Zip::File.open(zip_file_path, Zip::File::CREATE) do |zipfile| Zip::File.open(zip_file_path, create: true) do |zipfile|
Dir.glob(export_directory.join('**', '*')).each do |file| Dir.glob(export_directory.join('**', '*')).each do |file|
next if File.directory?(file) || file == zip_file_path.to_s next if File.directory?(file) || file == zip_file_path.to_s
relative_path = file.sub(export_directory.to_s + '/', '') relative_path = file.sub(%r{#{export_directory}/}, '')
zipfile.add(relative_path, file) zipfile.add(relative_path, file)
end end

View file

@ -71,11 +71,15 @@ class Users::ImportData
Zip::File.open(archive_path) do |zip_file| Zip::File.open(archive_path) do |zip_file|
zip_file.each do |entry| zip_file.each do |entry|
extraction_path = @import_directory.join(entry.name) next if entry.directory?
extraction_path = File.join(@import_directory, entry.name)
Rails.logger.debug "Extracting #{entry.name} to #{extraction_path}"
FileUtils.mkdir_p(File.dirname(extraction_path)) FileUtils.mkdir_p(File.dirname(extraction_path))
entry.extract(extraction_path) # Use destination_directory parameter for rubyzip 3.x compatibility
entry.extract(entry.name, destination_directory: @import_directory)
end end
end end
end end

View file

@ -23,7 +23,12 @@ RSpec.describe Notification, type: :model do
let(:unread_notification) { create(:notification, read_at: nil) } let(:unread_notification) { create(:notification, read_at: nil) }
it 'returns only unread notifications' do it 'returns only unread notifications' do
expect(described_class.unread).to eq([unread_notification]) read_notification # ensure it's created
unread_notification # ensure it's created
unread_notifications = described_class.unread
expect(unread_notifications).to include(unread_notification)
expect(unread_notifications).not_to include(read_notification)
end end
end end
end end

View file

@ -57,7 +57,7 @@ RSpec.describe Users::ExportData, type: :service do
allow(export_record).to receive_message_chain(:file, :attach) allow(export_record).to receive_message_chain(:file, :attach)
# Mock Zip file creation # Mock Zip file creation
allow(Zip::File).to receive(:open).with(zip_file_path, Zip::File::CREATE).and_yield(zip_file_double) allow(Zip::File).to receive(:open).with(zip_file_path, create: true).and_yield(zip_file_double)
allow(zip_file_double).to receive(:default_compression=) allow(zip_file_double).to receive(:default_compression=)
allow(zip_file_double).to receive(:default_compression_level=) allow(zip_file_double).to receive(:default_compression_level=)
allow(zip_file_double).to receive(:add) allow(zip_file_double).to receive(:add)
@ -108,7 +108,7 @@ RSpec.describe Users::ExportData, type: :service do
end end
it 'creates a zip file with proper compression settings' do it 'creates a zip file with proper compression settings' do
expect(Zip::File).to receive(:open).with(zip_file_path, Zip::File::CREATE) expect(Zip::File).to receive(:open).with(zip_file_path, create: true)
expect(Zip).to receive(:default_compression).and_return(-1) # Mock original compression expect(Zip).to receive(:default_compression).and_return(-1) # Mock original compression
expect(Zip).to receive(:default_compression=).with(Zip::Entry::DEFLATED) expect(Zip).to receive(:default_compression=).with(Zip::Entry::DEFLATED)
expect(Zip).to receive(:default_compression=).with(-1) # Restoration expect(Zip).to receive(:default_compression=).with(-1) # Restoration