Я работаю над сервисом / рабочим процессом, который берет несколько файлов данных, связанных с Project
, и создает из них zip. Эти файлы управляются Carrierwave. Я использую родной Rails TestCase / Minitest и мне было интересно, как лучше всего протестировать генерацию zip-файла?
На данный момент код, который будет захватывать файлы и записывать их в zip-файл, выглядит примерно так:
def generate_zip(project)
project_tracks = project.project_tracks
# base temp dir
temp_dir = Dir.mktmpdir
# path for zip we are about to create
zip_path = File.join(temp_dir, "#{project.name}.zip")
Zip::ZipOutputStream.open(zip_path) do |zos|
project_tracks.each do |project_track|
path = project_track.track.path
zos.put_next_entry(path)
zos.write project_track.track.file.read
end
end
end
Изначально я думал о том, чтобы создать zip-файлы и сравнить байты? Интересно, была ли это хорошая идея или есть лучший / более быстрый способ проверить эту логику.