diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 78b367d80..5685796af 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -14,4 +14,8 @@ protected def user_for_paper_trail current_user end + + def byte_order_mark + "\uFEFF" + end end diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 17bae5ee8..a9b927725 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -22,7 +22,7 @@ class CaseLogsController < ApplicationController end format.csv do - send_data unpaginated_filtered_logs.to_csv(current_user), filename: "logs-#{Time.zone.now}.csv" + send_data byte_order_mark + unpaginated_filtered_logs.to_csv(current_user), filename: "logs-#{Time.zone.now}.csv" end end end diff --git a/app/controllers/organisations_controller.rb b/app/controllers/organisations_controller.rb index cb600b004..81ba4f737 100644 --- a/app/controllers/organisations_controller.rb +++ b/app/controllers/organisations_controller.rb @@ -45,7 +45,7 @@ class OrganisationsController < ApplicationController end end format.csv do - send_data unpaginated_filtered_users.to_csv, filename: "users-#{@organisation.name}-#{Time.zone.now}.csv" + send_data byte_order_mark + unpaginated_filtered_users.to_csv, filename: "users-#{@organisation.name}-#{Time.zone.now}.csv" end end end @@ -103,7 +103,7 @@ class OrganisationsController < ApplicationController end format.csv do - send_data unpaginated_filtered_logs.to_csv, filename: "logs-#{@organisation.name}-#{Time.zone.now}.csv" + send_data byte_order_mark + unpaginated_filtered_logs.to_csv, filename: "logs-#{@organisation.name}-#{Time.zone.now}.csv" end end else diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index cd82742b6..9ab691a53 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,7 +20,7 @@ class UsersController < ApplicationController format.html format.csv do if current_user.support? - send_data filtered_users.to_csv, filename: "users-#{Time.zone.now}.csv" + send_data byte_order_mark + filtered_users.to_csv, filename: "users-#{Time.zone.now}.csv" else head :unauthorized end diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb index 4ca219c67..5c4ce4dca 100644 --- a/spec/requests/case_logs_controller_spec.rb +++ b/spec/requests/case_logs_controller_spec.rb @@ -755,7 +755,7 @@ RSpec.describe CaseLogsController, type: :request do it "downloads a CSV file with headers" do csv = CSV.parse(response.body) - expect(csv.first.first).to eq("id") + expect(csv.first.first).to eq("\uFEFFid") expect(csv.second.first).to eq(case_log.id.to_s) end