1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00

Fix import configuration failures (#1876)

This commit is contained in:
Zach Gollwitzer 2025-02-21 08:58:06 -05:00 committed by GitHub
parent c620d1fc1e
commit 8539ac7dec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 32 additions and 4 deletions

View file

@ -105,8 +105,8 @@ class Import < ApplicationRecord
def generate_rows_from_csv
rows.destroy_all
csv_rows.each do |row|
rows.create!(
mapped_rows = csv_rows.map do |row|
{
account: row[account_col_label].to_s,
date: row[date_col_label].to_s,
qty: sanitize_number(row[qty_col_label]).to_s,
@ -119,8 +119,10 @@ class Import < ApplicationRecord
tags: row[tags_col_label].to_s,
entity_type: row[entity_type_col_label].to_s,
notes: row[notes_col_label].to_s
)
}
end
rows.insert_all!(mapped_rows)
end
def sync_mappings

View file

@ -68,7 +68,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name\n01/01/2024,\"1,234.56\",Test"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "1234.56", row.amount
end
@ -86,6 +86,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name\n01/01/2024,\"1.234,56\",Test"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "1234.56", row.amount
@ -105,6 +106,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name\n01/01/2024,\"1 234,56\",Test"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "1234.56", row.amount
@ -123,6 +125,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name\n01/01/2024,1234,Test"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "1234", row.amount
@ -143,6 +146,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name,currency\n01/01/2024,123.45,Test,EUR"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "EUR", row.currency
@ -163,6 +167,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name,currency\n01/01/2024,123.45,Test,"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "USD", row.currency
@ -182,6 +187,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name\n01/01/2024,123.45,Test"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "USD", row.currency
@ -206,6 +212,7 @@ module ImportInterfaceTest
"01/01/2024,1234.56,Salary,Bank Account,Income,\"monthly,salary\",Salary payment,EUR"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "01/01/2024", row.date
@ -230,6 +237,7 @@ module ImportInterfaceTest
csv_data = "date,amount\n01/01/2024,1234.56"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "01/01/2024", row.date
@ -253,6 +261,7 @@ module ImportInterfaceTest
csv_data = "date,amount,name,category,tags\n01/01/2024,1234.56,,,"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "01/01/2024", row.date
@ -262,6 +271,22 @@ module ImportInterfaceTest
assert_equal "", row.tags
end
test "can submit configuration that results in invalid rows for user to fix later" do
import = imports(:transaction)
csv_data = "date,amount,name\n01/01/2024,1234.56,Test"
import.update!(raw_file_str: csv_data)
import.update!(
date_format: "%Y-%m-%d" # Does not match the raw CSV date, so rows will be invalid, but still generated
)
import.generate_rows_from_csv
import.reload
assert_equal "01/01/2024", import.rows.first.date
assert import.rows.first.invalid?
end
test "handles trade-specific fields" do
import = imports(:transaction)
import.update!(
@ -277,6 +302,7 @@ module ImportInterfaceTest
csv_data = "date,amount,quantity,symbol,price\n01/01/2024,1234.56,10,AAPL,123.456"
import.update!(raw_file_str: csv_data)
import.generate_rows_from_csv
import.reload
row = import.rows.first
assert_equal "10", row.qty