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, template_hint: true) assert_equal "CSV uploaded successfully.", flash[:notice] end test "uploads valid csv by file" do patch import_upload_url(@import), params: { import: { import_file: file_fixture_upload("imports/valid.csv"), col_sep: "," } } assert_redirected_to import_configuration_url(@import, template_hint: true) assert_equal "CSV uploaded successfully.", flash[:notice] end test "account select does not leak unshared family accounts (#1803)" do sign_in users(:family_member) get import_upload_url(@import) assert_response :success assert_select 'select[name="import[account_id]"] option', text: "Checking Account" assert_select 'select[name="import[account_id]"] option', text: "Collectable Account", count: 0 assert_select 'select[name="import[account_id]"] option', text: "IOU (personal debt to friend)", count: 0 assert_select 'select[name="import[account_id]"] option', text: "Plaid Depository Account", count: 0 end test "invalid csv cannot be uploaded" do patch import_upload_url(@import), params: { import: { import_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