@@ -13,6 +13,109 @@ import (
1313 "github.com/mayswind/ezbookkeeping/pkg/utils"
1414)
1515
16+ func TestCamt052TransactionDataFileParseImportedData_MinimumValidData (t * testing.T ) {
17+ importer := Camt052TransactionDataImporter
18+ context := core .NewNullContext ()
19+
20+ user := & models.User {
21+ Uid : 1234567890 ,
22+ DefaultCurrency : "CNY" ,
23+ }
24+
25+ allNewTransactions , allNewAccounts , allNewSubExpenseCategories , allNewSubIncomeCategories , allNewSubTransferCategories , allNewTags , err := importer .ParseImportedData (context , user , []byte (
26+ `<?xml version="1.0" encoding="UTF-8"?>
27+ <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.052.001.02">
28+ <BkToCstmrAcctRpt>
29+ <Rpt>
30+ <Acct>
31+ <Id>
32+ <IBAN>123</IBAN>
33+ </Id>
34+ <Ccy>CNY</Ccy>
35+ </Acct>
36+ <Ntry>
37+ <BookgDt>
38+ <DtTm>2024-09-01T01:23:45+08:00</DtTm>
39+ </BookgDt>
40+ <CdtDbtInd>CRDT</CdtDbtInd>
41+ <Amt Ccy="CNY">123.45</Amt>
42+ </Ntry>
43+ <Ntry>
44+ <BookgDt>
45+ <DtTm>2024-09-01T12:34:56+08:00</DtTm>
46+ </BookgDt>
47+ <CdtDbtInd>DBIT</CdtDbtInd>
48+ <Amt Ccy="CNY">0.12</Amt>
49+ </Ntry>
50+ </Rpt>
51+ <Rpt>
52+ <Acct>
53+ <Id>
54+ <Othr>
55+ <Id>456</Id>
56+ </Othr>
57+ </Id>
58+ <Ccy>USD</Ccy>
59+ </Acct>
60+ <Ntry>
61+ <BookgDt>
62+ <DtTm>2024-09-01T23:59:59+08:00</DtTm>
63+ </BookgDt>
64+ <CdtDbtInd>CRDT</CdtDbtInd>
65+ <Amt Ccy="USD">1.23</Amt>
66+ </Ntry>
67+ </Rpt>
68+ </BkToCstmrAcctRpt>
69+ </Document>` ), time .UTC , converter .DefaultImporterOptions , nil , nil , nil , nil , nil )
70+
71+ assert .Nil (t , err )
72+
73+ assert .Equal (t , 3 , len (allNewTransactions ))
74+ assert .Equal (t , 2 , len (allNewAccounts ))
75+ assert .Equal (t , 1 , len (allNewSubExpenseCategories ))
76+ assert .Equal (t , 1 , len (allNewSubIncomeCategories ))
77+ assert .Equal (t , 0 , len (allNewSubTransferCategories ))
78+ assert .Equal (t , 0 , len (allNewTags ))
79+
80+ assert .Equal (t , int64 (1234567890 ), allNewTransactions [0 ].Uid )
81+ assert .Equal (t , models .TRANSACTION_DB_TYPE_INCOME , allNewTransactions [0 ].Type )
82+ assert .Equal (t , int64 (1725125025 ), utils .GetUnixTimeFromTransactionTime (allNewTransactions [0 ].TransactionTime ))
83+ assert .Equal (t , int64 (12345 ), allNewTransactions [0 ].Amount )
84+ assert .Equal (t , "123" , allNewTransactions [0 ].OriginalSourceAccountName )
85+ assert .Equal (t , "CNY" , allNewTransactions [0 ].OriginalSourceAccountCurrency )
86+ assert .Equal (t , "" , allNewTransactions [0 ].OriginalCategoryName )
87+
88+ assert .Equal (t , int64 (1234567890 ), allNewTransactions [1 ].Uid )
89+ assert .Equal (t , models .TRANSACTION_DB_TYPE_EXPENSE , allNewTransactions [1 ].Type )
90+ assert .Equal (t , int64 (1725165296 ), utils .GetUnixTimeFromTransactionTime (allNewTransactions [1 ].TransactionTime ))
91+ assert .Equal (t , int64 (12 ), allNewTransactions [1 ].Amount )
92+ assert .Equal (t , "123" , allNewTransactions [1 ].OriginalSourceAccountName )
93+ assert .Equal (t , "CNY" , allNewTransactions [1 ].OriginalSourceAccountCurrency )
94+ assert .Equal (t , "" , allNewTransactions [1 ].OriginalCategoryName )
95+
96+ assert .Equal (t , int64 (1234567890 ), allNewTransactions [2 ].Uid )
97+ assert .Equal (t , models .TRANSACTION_DB_TYPE_INCOME , allNewTransactions [2 ].Type )
98+ assert .Equal (t , int64 (1725206399 ), utils .GetUnixTimeFromTransactionTime (allNewTransactions [2 ].TransactionTime ))
99+ assert .Equal (t , int64 (123 ), allNewTransactions [2 ].Amount )
100+ assert .Equal (t , "456" , allNewTransactions [2 ].OriginalSourceAccountName )
101+ assert .Equal (t , "USD" , allNewTransactions [2 ].OriginalSourceAccountCurrency )
102+ assert .Equal (t , "" , allNewTransactions [2 ].OriginalCategoryName )
103+
104+ assert .Equal (t , int64 (1234567890 ), allNewAccounts [0 ].Uid )
105+ assert .Equal (t , "123" , allNewAccounts [0 ].Name )
106+ assert .Equal (t , "CNY" , allNewAccounts [0 ].Currency )
107+
108+ assert .Equal (t , int64 (1234567890 ), allNewAccounts [1 ].Uid )
109+ assert .Equal (t , "456" , allNewAccounts [1 ].Name )
110+ assert .Equal (t , "USD" , allNewAccounts [1 ].Currency )
111+
112+ assert .Equal (t , int64 (1234567890 ), allNewSubExpenseCategories [0 ].Uid )
113+ assert .Equal (t , "" , allNewSubExpenseCategories [0 ].Name )
114+
115+ assert .Equal (t , int64 (1234567890 ), allNewSubIncomeCategories [0 ].Uid )
116+ assert .Equal (t , "" , allNewSubIncomeCategories [0 ].Name )
117+ }
118+
16119func TestCamt053TransactionDataFileParseImportedData_MinimumValidData (t * testing.T ) {
17120 importer := Camt053TransactionDataImporter
18121 context := core .NewNullContext ()
0 commit comments