diff --git a/app/models/import/csv.rb b/app/models/import/csv.rb index 5018af9c..873180de 100644 --- a/app/models/import/csv.rb +++ b/app/models/import/csv.rb @@ -1,6 +1,6 @@ class Import::Csv def self.parse_csv(csv_str) - CSV.parse((csv_str || "").strip, headers: true, converters: [ ->(str) { str.strip } ]) + CSV.parse((csv_str || "").strip, headers: true, converters: [ ->(str) { str&.strip } ]) end def self.create_with_field_mappings(raw_csv_str, fields, field_mappings) diff --git a/test/models/import/csv_test.rb b/test/models/import/csv_test.rb index 1bef280d..443a05c7 100644 --- a/test/models/import/csv_test.rb +++ b/test/models/import/csv_test.rb @@ -36,6 +36,11 @@ class Import::CsvTest < ActiveSupport::TestCase assert_not invalid_csv.valid? end + test "csv with additional columns and empty values" do + csv = Import::Csv.new valid_csv_with_extra_column + assert csv.valid? + end + test "updating a cell returns a copy of the original csv" do original_date = "2024-01-01" new_date = "2024-01-01" diff --git a/test/support/import_test_helper.rb b/test/support/import_test_helper.rb index ee8eb3c2..52ae44f0 100644 --- a/test/support/import_test_helper.rb +++ b/test/support/import_test_helper.rb @@ -14,6 +14,14 @@ module ImportTestHelper ROWS end + def valid_csv_with_extra_column + <<-ROWS + date,name,category,"optional id",amount + 2024-01-01,Starbucks drink,Food,1234,20 + 2024-01-02,Amazon stuff,Shopping,,200 + ROWS + end + def malformed_csv_str <<-ROWS name,age