Allow custom column separator for CSV parsing in uploads controller #1470

Merged
acflint merged 2 commits from fix-csv-import into main 2024-11-19 00:31:18 +08:00
2 changed files with 7 additions and 4 deletions

View File

@@ -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

View File

@@ -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: ","
}
}