From 8fe0249f453c917f095cf4c080eeeb9942744d00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Zrim=C5=A1ek?= Date: Wed, 7 Nov 2018 05:04:29 +0100 Subject: [PATCH] Fix test for repository ZIP export & return path for ZIP exports [SCI-2646] --- app/models/team_zip_export.rb | 2 ++ app/models/zip_export.rb | 4 ++++ app/services/repository_zip_export.rb | 3 +++ spec/services/repository_zip_export_spec.rb | 14 ++++++++------ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/models/team_zip_export.rb b/app/models/team_zip_export.rb index 2ee99cc58..6fab1bb2f 100644 --- a/app/models/team_zip_export.rb +++ b/app/models/team_zip_export.rb @@ -34,6 +34,8 @@ class TeamZipExport < ZipExport FileUtils.rm_rf([dir_to_zip, output_file], secure: true) generate_notification(user) end + + zip_file.path end handle_asynchronously :generate_exportable_zip diff --git a/app/models/zip_export.rb b/app/models/zip_export.rb index 6a155dbbf..87dde7120 100644 --- a/app/models/zip_export.rb +++ b/app/models/zip_export.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'zip' require 'fileutils' require 'csv' @@ -62,6 +64,8 @@ class ZipExport < ApplicationRecord FileUtils.rm_rf([dir_to_zip, output_file], secure: true) generate_notification(user) end + + zip_file.path end handle_asynchronously :generate_exportable_zip diff --git a/app/services/repository_zip_export.rb b/app/services/repository_zip_export.rb index b2ebaad4f..1c862ede6 100644 --- a/app/services/repository_zip_export.rb +++ b/app/services/repository_zip_export.rb @@ -1,4 +1,7 @@ +# frozen_string_literal: true + require 'csv' + module RepositoryZipExport def self.generate_zip(params, repository, current_user) # Fetch rows in the same order as in the currently viewed datatable diff --git a/spec/services/repository_zip_export_spec.rb b/spec/services/repository_zip_export_spec.rb index 145e6b2a5..8be0cf1ca 100644 --- a/spec/services/repository_zip_export_spec.rb +++ b/spec/services/repository_zip_export_spec.rb @@ -64,13 +64,15 @@ describe RepositoryZipExport, type: :background_job do end it 'generates a zip with csv file with exported rows' do - RepositoryZipExport.generate_zip(params, repository, user) - zip = ZipExport.first.zip_file_file_name - .gsub('export-', '') - .gsub('.zip', '') - csv_path = Rails.root.join('tmp', "temp-zip-#{zip}", 'export.csv').to_s + csv_zip_path = RepositoryZipExport.generate_zip(params, repository, user) + parsed_csv_content = Zip::File.open(csv_zip_path) do |zip_file| + csv_file = zip_file.glob('*.csv').first + csv_content = csv_file.get_input_stream.read + CSV.parse(csv_content, headers: true) + end index = 0 - CSV.foreach(csv_path, headers: true) do |row| + + parsed_csv_content.each do |row| row_hash = row.to_h expect(row_hash.fetch('Sample group')).to eq 'item one' expect(row_hash.fetch('Custom items')).to eq 'custum column value'