From 34e110430c80af56c5bef05c0b5d63728af34d52 Mon Sep 17 00:00:00 2001 From: Philipe Leandro Date: Sun, 5 Nov 2023 18:26:37 -0300 Subject: [PATCH 1/8] Add endpoint to upload file --- .../api/v1/handle_file_controller.rb | 12 ++++++++++ app/helpers/handle_file_helper.rb | 24 +++++++++++++++++++ config/application.rb | 1 + config/routes.rb | 1 + 4 files changed, 38 insertions(+) create mode 100644 app/controllers/api/v1/handle_file_controller.rb create mode 100644 app/helpers/handle_file_helper.rb diff --git a/app/controllers/api/v1/handle_file_controller.rb b/app/controllers/api/v1/handle_file_controller.rb new file mode 100644 index 0000000..9ce50e5 --- /dev/null +++ b/app/controllers/api/v1/handle_file_controller.rb @@ -0,0 +1,12 @@ +module Api + module V1 + class HandleFileController < Api::ApplicationController + include HandleFileHelper + + def import + rows = set_rows_to_json(params[:file].tempfile) + render json: {file_rows: rows}, status: :ok + end + end + end +end \ No newline at end of file diff --git a/app/helpers/handle_file_helper.rb b/app/helpers/handle_file_helper.rb new file mode 100644 index 0000000..df74648 --- /dev/null +++ b/app/helpers/handle_file_helper.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true +require 'csv' + +module HandleFileHelper + def set_rows_to_json(file) + file_parsed = parse_file_csv(file) + set_response(file_parsed) + end + + def parse_file_csv(file) + CSV.parse(file.read) + end + + def encode_string(string) + string.force_encoding("ISO-8859-1").encode("UTF-8") + end + + def set_response(parsed_file) + json_response = {} + parsed_file.each_with_index { |row,index| json_response.merge!("row_#{index + 1}": encode_string(row.join(','))) } + + json_response + end +end diff --git a/config/application.rb b/config/application.rb index 287432d..2c1bbbd 100644 --- a/config/application.rb +++ b/config/application.rb @@ -3,6 +3,7 @@ require_relative "boot" require "rails/all" +require "csv" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. diff --git a/config/routes.rb b/config/routes.rb index c365fed..52b6b14 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -22,6 +22,7 @@ namespace :v1 do get "/public_method", to: "hello_world#public_method" get "/private_method", to: "hello_world#private_method" + post "/import", to: "handle_file#import" resources :users, only: [:index] end From cc92f7801368053f8ce3f1bcda001e968034635c Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Tue, 17 Dec 2024 21:11:08 -0300 Subject: [PATCH 2/8] initial tests csv --- Gemfile | 2 + spec/fixtures/files/empty_file.csv | 0 spec/fixtures/files/non_csv_file.txt | 0 spec/fixtures/files/valid_file.csv | 3 ++ spec/requests/api/v1/handle_file_spec.rb | 57 ++++++++++++++++++++++++ spec/requests/api/v1/hello_word_spec.rb | 2 +- 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/files/empty_file.csv create mode 100644 spec/fixtures/files/non_csv_file.txt create mode 100644 spec/fixtures/files/valid_file.csv create mode 100644 spec/requests/api/v1/handle_file_spec.rb diff --git a/Gemfile b/Gemfile index e5b5eb6..291de7c 100644 --- a/Gemfile +++ b/Gemfile @@ -96,6 +96,8 @@ group :development do # Speed up commands on slow machines / big apps [https://github.com/rails/spring] gem "spring" + + gem 'graphiql-rails' end group :test do diff --git a/spec/fixtures/files/empty_file.csv b/spec/fixtures/files/empty_file.csv new file mode 100644 index 0000000..e69de29 diff --git a/spec/fixtures/files/non_csv_file.txt b/spec/fixtures/files/non_csv_file.txt new file mode 100644 index 0000000..e69de29 diff --git a/spec/fixtures/files/valid_file.csv b/spec/fixtures/files/valid_file.csv new file mode 100644 index 0000000..cfa01ee --- /dev/null +++ b/spec/fixtures/files/valid_file.csv @@ -0,0 +1,3 @@ +name,age +Alice,30 +Bob,25 \ No newline at end of file diff --git a/spec/requests/api/v1/handle_file_spec.rb b/spec/requests/api/v1/handle_file_spec.rb new file mode 100644 index 0000000..67078d6 --- /dev/null +++ b/spec/requests/api/v1/handle_file_spec.rb @@ -0,0 +1,57 @@ +require "rails_helper" + +RSpec.describe "HandleFiles" do + describe 'POST api/v1/import' do + context 'when CSV file is valid' do + let(:csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'valid_file.csv'), 'text/csv') } + + it 'returns status ok' do + post '/api/v1/import', params: { file: csv_file } + + + expect(response).to have_http_status(:ok) + end + + it 'returns the correct JSON response with file rows' do + post '/api/v1/import', params: { file: csv_file } + + + expect(JSON.parse(response.body)['file_rows']).to be_a(Hash) + end + end + + + context 'when CSV file is empty' do + let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'empty_file.csv'), 'text/csv') } + + it 'returns status ok' do + post '/api/v1/import', params: { file: empty_csv_file } + + expect(response).to have_http_status(:ok) + end + + it 'returns empty file rows in JSON' do + post '/api/v1/import', params: { file: empty_csv_file } + + expect(JSON.parse(response.body)['file_rows']).to be_empty + end + end + + context 'when file is not a CSV' do + let(:non_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'non_csv_file.txt'), 'text/csv') } + + it 'returns an error status' do + post '/api/v1/import', params: { file: non_csv_file } + + expect(response).to have_http_status(:unprocessable_entity) + end + + it 'returns an error message' do + post '/api/v1/import', params: { file: non_csv_file } + + expect(response.body).to include('Invalid file type') + end + end + end +end + diff --git a/spec/requests/api/v1/hello_word_spec.rb b/spec/requests/api/v1/hello_word_spec.rb index 93df43b..d0022a1 100644 --- a/spec/requests/api/v1/hello_word_spec.rb +++ b/spec/requests/api/v1/hello_word_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "rails_helper" +require 'rails_helper' RSpec.describe "HelloWorlds" do describe "GET /api/v1/public_method" do From fa2b75e4dbb8f8035fa2b3c6f1662b16ac86f527 Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Wed, 18 Dec 2024 21:44:02 -0300 Subject: [PATCH 3/8] tests csv --- .ruby-version | 1 + backend/config/routes.rb | 3 ++ .../spec/requests/api/v1/handle_file_spec.rb | 30 +++++++------------ 3 files changed, 15 insertions(+), 19 deletions(-) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..bea438e --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.1 diff --git a/backend/config/routes.rb b/backend/config/routes.rb index aa9596d..51497c9 100644 --- a/backend/config/routes.rb +++ b/backend/config/routes.rb @@ -18,6 +18,9 @@ namespace :api, defaults: { format: :json } do namespace :v1 do + get "/public_method", to: "hello_world#public_method" + get "/private_method", to: "hello_world#private_method" + post "/import", to: "handle_file#import" resources :users, only: %i[index create] resources :schools, only: %i[index] end diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 67078d6..06dd747 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -7,15 +7,11 @@ it 'returns status ok' do post '/api/v1/import', params: { file: csv_file } - - expect(response).to have_http_status(:ok) end it 'returns the correct JSON response with file rows' do post '/api/v1/import', params: { file: csv_file } - - expect(JSON.parse(response.body)['file_rows']).to be_a(Hash) end end @@ -23,33 +19,29 @@ context 'when CSV file is empty' do let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'empty_file.csv'), 'text/csv') } - + it 'returns status ok' do post '/api/v1/import', params: { file: empty_csv_file } - expect(response).to have_http_status(:ok) end it 'returns empty file rows in JSON' do post '/api/v1/import', params: { file: empty_csv_file } - expect(JSON.parse(response.body)['file_rows']).to be_empty end end - context 'when file is not a CSV' do - let(:non_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'non_csv_file.txt'), 'text/csv') } - - it 'returns an error status' do - post '/api/v1/import', params: { file: non_csv_file } - - expect(response).to have_http_status(:unprocessable_entity) + context "when CSV file is valid" do + let(:csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'valid_file.csv'), 'text/csv') } + + it "returns status ok" do + post '/api/v1/import', params: { file: csv_file } + expect(response).to have_http_status(:ok) end - - it 'returns an error message' do - post '/api/v1/import', params: { file: non_csv_file } - - expect(response.body).to include('Invalid file type') + + it "returns the correct JSON response with file rows" do + post '/api/v1/import', params: { file: csv_file } + expect(response.body).to include('file_rows') end end end From 8a11e1e4ec94d5da755083145609968882c8de90 Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Sun, 22 Dec 2024 10:32:37 -0300 Subject: [PATCH 4/8] routes and gemfile resolved --- backend/Gemfile | 1 - backend/config/routes.rb | 2 -- backend/spec/fixtures/files/valid_file.csv | 2 +- backend/spec/requests/api/v1/handle_file_spec.rb | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/backend/Gemfile b/backend/Gemfile index fecaf66..9b3267b 100644 --- a/backend/Gemfile +++ b/backend/Gemfile @@ -144,7 +144,6 @@ group :development do # Speed up commands on slow machines / big apps [https://github.com/rails/spring] gem "spring" - gem 'graphiql-rails' # Annotate Rails classes with schema and routes info gem "annotate" end diff --git a/backend/config/routes.rb b/backend/config/routes.rb index 51497c9..339069e 100644 --- a/backend/config/routes.rb +++ b/backend/config/routes.rb @@ -18,8 +18,6 @@ namespace :api, defaults: { format: :json } do namespace :v1 do - get "/public_method", to: "hello_world#public_method" - get "/private_method", to: "hello_world#private_method" post "/import", to: "handle_file#import" resources :users, only: %i[index create] resources :schools, only: %i[index] diff --git a/backend/spec/fixtures/files/valid_file.csv b/backend/spec/fixtures/files/valid_file.csv index cfa01ee..7f8aa6e 100644 --- a/backend/spec/fixtures/files/valid_file.csv +++ b/backend/spec/fixtures/files/valid_file.csv @@ -1,3 +1,3 @@ name,age Alice,30 -Bob,25 \ No newline at end of file +Bob,25 diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 06dd747..7fd9b32 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -16,7 +16,6 @@ end end - context 'when CSV file is empty' do let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'empty_file.csv'), 'text/csv') } From f2a8419a2793271217110995d54aa7908a4f282c Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Sun, 22 Dec 2024 10:57:36 -0300 Subject: [PATCH 5/8] linters resolved --- .../spec/requests/api/v1/handle_file_spec.rb | 43 ++++++++++--------- .../api/v1/hello_word_request_spec.rb | 2 +- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 7fd9b32..396e84f 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -1,48 +1,49 @@ +# frozen_string_literal: true + require "rails_helper" RSpec.describe "HandleFiles" do - describe 'POST api/v1/import' do - context 'when CSV file is valid' do - let(:csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'valid_file.csv'), 'text/csv') } + describe "POST api/v1/import" do + context "when CSV file is valid" do + let(:csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "valid_file.csv"), "text/csv") } - it 'returns status ok' do - post '/api/v1/import', params: { file: csv_file } + it "returns status ok" do + post "/api/v1/import", params: { file: csv_file } expect(response).to have_http_status(:ok) end - it 'returns the correct JSON response with file rows' do - post '/api/v1/import', params: { file: csv_file } - expect(JSON.parse(response.body)['file_rows']).to be_a(Hash) + it "returns the correct JSON response with file rows" do + post "/api/v1/import", params: { file: csv_file } + expect(JSON.parse(response.body)["file_rows"]).to be_a(Hash) end end - context 'when CSV file is empty' do - let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'empty_file.csv'), 'text/csv') } + context "when CSV file is empty" do + let(:empty_csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "empty_file.csv"), "text/csv") } - it 'returns status ok' do - post '/api/v1/import', params: { file: empty_csv_file } + it "returns status ok" do + post "/api/v1/import", params: { file: empty_csv_file } expect(response).to have_http_status(:ok) end - it 'returns empty file rows in JSON' do - post '/api/v1/import', params: { file: empty_csv_file } - expect(JSON.parse(response.body)['file_rows']).to be_empty + it "returns empty file rows in JSON" do + post "/api/v1/import", params: { file: empty_csv_file } + expect(JSON.parse(response.body)["file_rows"]).to be_empty end end - context "when CSV file is valid" do - let(:csv_file) { fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'valid_file.csv'), 'text/csv') } + context "when CSV file is not CSV" do + let(:non_csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "non_csv_file.txt"), "text/csv") } it "returns status ok" do - post '/api/v1/import', params: { file: csv_file } + post "/api/v1/import", params: { file: non_csv_file } expect(response).to have_http_status(:ok) end it "returns the correct JSON response with file rows" do - post '/api/v1/import', params: { file: csv_file } - expect(response.body).to include('file_rows') + post "/api/v1/import", params: { file: non_csv_file } + expect(response.body).to include("file_rows") end end end end - diff --git a/backend/spec/requests/api/v1/hello_word_request_spec.rb b/backend/spec/requests/api/v1/hello_word_request_spec.rb index d0022a1..93df43b 100644 --- a/backend/spec/requests/api/v1/hello_word_request_spec.rb +++ b/backend/spec/requests/api/v1/hello_word_request_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'rails_helper' +require "rails_helper" RSpec.describe "HelloWorlds" do describe "GET /api/v1/public_method" do From e660123ed47b524333143d4cb1fb8178b3d9ee7d Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Sun, 22 Dec 2024 11:03:46 -0300 Subject: [PATCH 6/8] linters resolved --- .../api/v1/handle_file_controller.rb | 4 ++- backend/app/helpers/handle_file_helper.rb | 5 ++-- .../spec/requests/api/v1/handle_file_spec.rb | 28 +++++++++++++------ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/backend/app/controllers/api/v1/handle_file_controller.rb b/backend/app/controllers/api/v1/handle_file_controller.rb index 9ce50e5..d60447c 100644 --- a/backend/app/controllers/api/v1/handle_file_controller.rb +++ b/backend/app/controllers/api/v1/handle_file_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Api module V1 class HandleFileController < Api::ApplicationController @@ -5,7 +7,7 @@ class HandleFileController < Api::ApplicationController def import rows = set_rows_to_json(params[:file].tempfile) - render json: {file_rows: rows}, status: :ok + render json: { file_rows: rows }, status: :ok end end end diff --git a/backend/app/helpers/handle_file_helper.rb b/backend/app/helpers/handle_file_helper.rb index df74648..679e7fb 100644 --- a/backend/app/helpers/handle_file_helper.rb +++ b/backend/app/helpers/handle_file_helper.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true -require 'csv' + +require "csv" module HandleFileHelper def set_rows_to_json(file) @@ -17,7 +18,7 @@ def encode_string(string) def set_response(parsed_file) json_response = {} - parsed_file.each_with_index { |row,index| json_response.merge!("row_#{index + 1}": encode_string(row.join(','))) } + parsed_file.each_with_index { |row ,index| json_response.merge!("row_#{ index + 1 }": encode_string(row.join(","))) } json_response end diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 396e84f..68172b2 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -5,7 +5,11 @@ RSpec.describe "HandleFiles" do describe "POST api/v1/import" do context "when CSV file is valid" do - let(:csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "valid_file.csv"), "text/csv") } + let(:csv_file) do + fixture_file_upload( + Rails.root.join("spec", "fixtures", "files", "valid_file.csv"), "text/csv" + ) + end it "returns status ok" do post "/api/v1/import", params: { file: csv_file } @@ -14,26 +18,34 @@ it "returns the correct JSON response with file rows" do post "/api/v1/import", params: { file: csv_file } - expect(JSON.parse(response.body)["file_rows"]).to be_a(Hash) + expect(response.parsed_body["file_rows"]).to be_a(Hash) end end context "when CSV file is empty" do - let(:empty_csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "empty_file.csv"), "text/csv") } - + let(:empty_csv_file) do + fixture_file_upload( + Rails.root.join("spec", "fixtures", "files", "empty_file.csv"), "text/csv" + ) + end + it "returns status ok" do post "/api/v1/import", params: { file: empty_csv_file } expect(response).to have_http_status(:ok) end - + it "returns empty file rows in JSON" do post "/api/v1/import", params: { file: empty_csv_file } - expect(JSON.parse(response.body)["file_rows"]).to be_empty + expect(response.parsed_body["file_rows"]).to be_empty end end - context "when CSV file is not CSV" do - let(:non_csv_file) { fixture_file_upload(Rails.root.join("spec", "fixtures", "files", "non_csv_file.txt"), "text/csv") } + context "when file is not a CSV" do + let(:non_csv_file) do + fixture_file_upload( + Rails.root.join("spec", "fixtures", "files", "non_csv_file.txt"), "text/csv" + ) + end it "returns status ok" do post "/api/v1/import", params: { file: non_csv_file } From e47321815b1656997e435210e2b7d64f5e217c90 Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Sun, 22 Dec 2024 11:07:46 -0300 Subject: [PATCH 7/8] linters resolved --- .../api/v1/handle_file_controller.rb | 2 +- backend/app/helpers/handle_file_helper.rb | 14 ++++++++------ .../spec/requests/api/v1/handle_file_spec.rb | 18 +++--------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/backend/app/controllers/api/v1/handle_file_controller.rb b/backend/app/controllers/api/v1/handle_file_controller.rb index d60447c..5450ce3 100644 --- a/backend/app/controllers/api/v1/handle_file_controller.rb +++ b/backend/app/controllers/api/v1/handle_file_controller.rb @@ -11,4 +11,4 @@ def import end end end -end \ No newline at end of file +end diff --git a/backend/app/helpers/handle_file_helper.rb b/backend/app/helpers/handle_file_helper.rb index 679e7fb..72ab95c 100644 --- a/backend/app/helpers/handle_file_helper.rb +++ b/backend/app/helpers/handle_file_helper.rb @@ -3,12 +3,12 @@ require "csv" module HandleFileHelper - def set_rows_to_json(file) - file_parsed = parse_file_csv(file) - set_response(file_parsed) + def rows_to_json(file) + file_parsed = parse_csv(file) + build_response(file_parsed) end - def parse_file_csv(file) + def parse_csv(file) CSV.parse(file.read) end @@ -16,9 +16,11 @@ def encode_string(string) string.force_encoding("ISO-8859-1").encode("UTF-8") end - def set_response(parsed_file) + def build_response(parsed_file) json_response = {} - parsed_file.each_with_index { |row ,index| json_response.merge!("row_#{ index + 1 }": encode_string(row.join(","))) } + parsed_file.each_with_index do |row, index| + json_response["row_#{index + 1}"] = encode_string(row.join(",")) + end json_response end diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 68172b2..3253a68 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -5,11 +5,7 @@ RSpec.describe "HandleFiles" do describe "POST api/v1/import" do context "when CSV file is valid" do - let(:csv_file) do - fixture_file_upload( - Rails.root.join("spec", "fixtures", "files", "valid_file.csv"), "text/csv" - ) - end + let(:csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/valid_file.csv'), 'text/csv') } it "returns status ok" do post "/api/v1/import", params: { file: csv_file } @@ -23,11 +19,7 @@ end context "when CSV file is empty" do - let(:empty_csv_file) do - fixture_file_upload( - Rails.root.join("spec", "fixtures", "files", "empty_file.csv"), "text/csv" - ) - end + let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/empty_file.csv'), 'text/csv') } it "returns status ok" do post "/api/v1/import", params: { file: empty_csv_file } @@ -41,11 +33,7 @@ end context "when file is not a CSV" do - let(:non_csv_file) do - fixture_file_upload( - Rails.root.join("spec", "fixtures", "files", "non_csv_file.txt"), "text/csv" - ) - end + let(:non_csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/non_csv_file.txt'), 'text/csv') } it "returns status ok" do post "/api/v1/import", params: { file: non_csv_file } From 7879cdee21bc3f49e45d1ee7cd2a0b83a89f143f Mon Sep 17 00:00:00 2001 From: Lucas Leandro Date: Sun, 22 Dec 2024 11:09:17 -0300 Subject: [PATCH 8/8] linters resolved --- backend/spec/requests/api/v1/handle_file_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/spec/requests/api/v1/handle_file_spec.rb b/backend/spec/requests/api/v1/handle_file_spec.rb index 3253a68..034e9e2 100644 --- a/backend/spec/requests/api/v1/handle_file_spec.rb +++ b/backend/spec/requests/api/v1/handle_file_spec.rb @@ -5,7 +5,7 @@ RSpec.describe "HandleFiles" do describe "POST api/v1/import" do context "when CSV file is valid" do - let(:csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/valid_file.csv'), 'text/csv') } + let(:csv_file) { fixture_file_upload(Rails.root.join("spec/fixtures/files/valid_file.csv"), "text/csv") } it "returns status ok" do post "/api/v1/import", params: { file: csv_file } @@ -19,7 +19,7 @@ end context "when CSV file is empty" do - let(:empty_csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/empty_file.csv'), 'text/csv') } + let(:empty_csv_file) { fixture_file_upload(Rails.root.join("spec/fixtures/files/empty_file.csv"), "text/csv") } it "returns status ok" do post "/api/v1/import", params: { file: empty_csv_file } @@ -33,7 +33,7 @@ end context "when file is not a CSV" do - let(:non_csv_file) { fixture_file_upload(Rails.root.join('spec/fixtures/files/non_csv_file.txt'), 'text/csv') } + let(:non_csv_file) { fixture_file_upload(Rails.root.join("spec/fixtures/files/non_csv_file.txt"), "text/csv") } it "returns status ok" do post "/api/v1/import", params: { file: non_csv_file }