From 189693b7b542b189249c3877bb86c42ec891e619 Mon Sep 17 00:00:00 2001 From: Steve Polito Date: Thu, 27 Jun 2024 14:27:42 -0400 Subject: [PATCH] Handle empty arrays The previous commit failed to account for the case where `#find_by_sql` returns no results. --- lib/art_vandelay.rb | 6 +++++- test/art_vandelay_test.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/art_vandelay.rb b/lib/art_vandelay.rb index 6f41763..eca3522 100644 --- a/lib/art_vandelay.rb +++ b/lib/art_vandelay.rb @@ -41,7 +41,9 @@ def csv elsif records.is_a?(ActiveRecord::Base) csv_exports << CSV.parse(generate_csv(records), headers: true) elsif records.is_a?(Array) - csv_exports << CSV.parse(generate_csv(records), headers: true) + if records.any? + csv_exports << CSV.parse(generate_csv(records), headers: true) + end end Result.new(csv_exports) @@ -125,6 +127,8 @@ def model_name records.model_name.name when Array records.first.model_name.name + else + raise "Unsupported export: #{records.class}" end end diff --git a/test/art_vandelay_test.rb b/test/art_vandelay_test.rb index 2714e6d..b16908e 100644 --- a/test/art_vandelay_test.rb +++ b/test/art_vandelay_test.rb @@ -92,6 +92,12 @@ class Export < ArtVandelayTest ) end + test "it does not create a CSV when passed an empty Array" do + result = ArtVandelay::Export.new([]).csv + + assert_empty result.csv_exports + end + test "it controlls what data is filtered" do user = User.create!(email: "user@xample.com", password: "password") ArtVandelay.setup do |config|