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:
parent
c620d1fc1e
commit
8539ac7dec
2 changed files with 32 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue