Testing CSV Upload Controller Functionality in Maybe Finance
This test suite evaluates the functionality of CSV file uploads in the Maybe Finance application, focusing on both manual input and file upload methods. The tests verify proper handling of valid and invalid CSV data, ensuring robust import functionality for financial transactions.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
maybe-finance/maybe
test/controllers/import/uploads_controller_test.rb
require "test_helper"
class Import::UploadsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in @user = users(:family_admin)
@import = imports(:transaction)
end
test "show" do
get import_upload_url(@import)
assert_response :success
end
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,
col_sep: ","
}
}
assert_redirected_to import_configuration_url(@import)
assert_equal "CSV uploaded successfully.", flash[:notice]
end
test "uploads valid csv by file" do
patch import_upload_url(@import), params: {
import: {
csv_file: file_fixture_upload("imports/valid.csv"),
col_sep: ","
}
}
assert_redirected_to import_configuration_url(@import)
assert_equal "CSV uploaded successfully.", flash[:notice]
end
test "invalid csv cannot be uploaded" do
patch import_upload_url(@import), params: {
import: {
csv_file: file_fixture_upload("imports/invalid.csv"),
col_sep: ","
}
}
assert_response :unprocessable_entity
assert_equal "Must be valid CSV with headers and at least one row of data", flash[:alert]
end
end