From 9cc9f42bdc03541690eaa8ae2cecb38cb8af4139 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2024 08:31:17 -0800 Subject: [PATCH] Allow custom column separator for CSV parsing in uploads controller (#1470) * Allow custom column separator for CSV parsing in uploads controller * Add column separator parameter for CSV uploads in tests --- app/controllers/import/uploads_controller.rb | 2 +- test/controllers/import/uploads_controller_test.rb | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/controllers/import/uploads_controller.rb b/app/controllers/import/uploads_controller.rb index e89988ac..f3c65d6e 100644 --- a/app/controllers/import/uploads_controller.rb +++ b/app/controllers/import/uploads_controller.rb @@ -32,7 +32,7 @@ class Import::UploadsController < ApplicationController require "csv" begin - csv = CSV.parse(str || "", headers: true) + csv = CSV.parse(str || "", headers: true, col_sep: upload_params[:col_sep]) return false if csv.headers.empty? return false if csv.count == 0 true diff --git a/test/controllers/import/uploads_controller_test.rb b/test/controllers/import/uploads_controller_test.rb index 75db3c4a..eb7f418b 100644 --- a/test/controllers/import/uploads_controller_test.rb +++ b/test/controllers/import/uploads_controller_test.rb @@ -14,7 +14,8 @@ class Import::UploadsControllerTest < ActionDispatch::IntegrationTest test "uploads valid csv by copy and pasting" do patch import_upload_url(@import), params: { import: { - raw_file_str: file_fixture("imports/valid.csv").read + raw_file_str: file_fixture("imports/valid.csv").read, + col_sep: "," } } @@ -25,7 +26,8 @@ class Import::UploadsControllerTest < ActionDispatch::IntegrationTest test "uploads valid csv by file" do patch import_upload_url(@import), params: { import: { - csv_file: file_fixture_upload("imports/valid.csv") + csv_file: file_fixture_upload("imports/valid.csv"), + col_sep: "," } } @@ -36,7 +38,8 @@ class Import::UploadsControllerTest < ActionDispatch::IntegrationTest test "invalid csv cannot be uploaded" do patch import_upload_url(@import), params: { import: { - csv_file: file_fixture_upload("imports/invalid.csv") + csv_file: file_fixture_upload("imports/invalid.csv"), + col_sep: "," } }