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
attr_reader :user
def export_directory
@export_directory
end
def files_directory
@files_directory
end
attr_reader :user, :export_directory, :files_directory
def calculate_entity_counts
Rails.logger.info "Calculating entity counts for export"
Rails.logger.info 'Calculating entity counts for export'
counts = {
areas: user.areas.count,
@ -340,15 +332,15 @@ class Users::ExportData
counts
end
def create_zip_archive(export_directory, zip_file_path)
def create_zip_archive(export_directory, zip_file_path)
original_compression = Zip.default_compression
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|
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)
end

View file

@ -71,11 +71,15 @@ class Users::ImportData
Zip::File.open(archive_path) do |zip_file|
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))
entry.extract(extraction_path)
# Use destination_directory parameter for rubyzip 3.x compatibility
entry.extract(entry.name, destination_directory: @import_directory)
end
end
end

View file

@ -23,7 +23,12 @@ RSpec.describe Notification, type: :model do
let(:unread_notification) { create(:notification, read_at: nil) }
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

View file

@ -57,7 +57,7 @@ RSpec.describe Users::ExportData, type: :service do
allow(export_record).to receive_message_chain(:file, :attach)
# 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_level=)
allow(zip_file_double).to receive(:add)
@ -108,7 +108,7 @@ RSpec.describe Users::ExportData, type: :service do
end
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=).with(Zip::Entry::DEFLATED)
expect(Zip).to receive(:default_compression=).with(-1) # Restoration