Как бы вы написали тест для генерации ZIP-файла? - PullRequest
0 голосов
/ 03 июля 2018

Я работаю над сервисом / рабочим процессом, который берет несколько файлов данных, связанных с 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-файлы и сравнить байты? Интересно, была ли это хорошая идея или есть лучший / более быстрый способ проверить эту логику.

...