add unit tests

This commit is contained in:
MaysWind
2024-10-30 00:55:46 +08:00
parent be7fbd405e
commit 92a78f6f12
@@ -0,0 +1,97 @@
package ofx
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/mayswind/ezbookkeeping/pkg/core"
)
func TestCreateNewOFXFileReader_OFX2(t *testing.T) {
context := core.NewNullContext()
reader, err := createNewOFXFileReader([]byte(
"<?xml version=\"1.0\" encoding=\"US-ASCII\"?>" +
"<?OFX OFXHEADER=\"200\" VERSION=\"211\" SECURITY=\"NONE\" OLDFILEUID=\"NONE\" NEWFILEUID=\"NONE\"?>" +
"<OFX>" +
" <BANKMSGSRSV1>" +
" <STMTTRNRS>" +
" <STMTRS>" +
" <CURDEF>CNY</CURDEF>" +
" <BANKACCTFROM>" +
" <ACCTID>123</ACCTID>" +
" </BANKACCTFROM>" +
" <BANKTRANLIST>" +
" <STMTTRN>" +
" <TRNTYPE>DEP</TRNTYPE>" +
" <DTPOSTED>20240901012345.000[+8:CST]</DTPOSTED>" +
" <TRNAMT>123.45</TRNAMT>" +
" </STMTTRN>" +
" </BANKTRANLIST>" +
" </STMTRS>" +
" </STMTTRNRS>" +
" </BANKMSGSRSV1>" +
"</OFX>"))
assert.Nil(t, err)
ofxFile, err := reader.read(context)
assert.Nil(t, err)
assert.NotNil(t, ofxFile)
assert.NotNil(t, ofxFile.BankMessageResponseV1)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse)
assert.Equal(t, "CNY", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.DefaultCurrency)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.AccountFrom)
assert.Equal(t, "123", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.AccountFrom.AccountId)
assert.Equal(t, 1, len(ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions))
assert.Equal(t, ofxDepositTransaction, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].TransactionType)
assert.Equal(t, "20240901012345.000[+8:CST]", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].PostedDate)
assert.Equal(t, "123.45", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].Amount)
}
func TestCreateNewOFXFileReader_OFX2WithoutAnyHeader(t *testing.T) {
context := core.NewNullContext()
reader, err := createNewOFXFileReader([]byte(
"<OFX>" +
" <BANKMSGSRSV1>" +
" <STMTTRNRS>" +
" <STMTRS>" +
" <CURDEF>CNY</CURDEF>" +
" <BANKACCTFROM>" +
" <ACCTID>123</ACCTID>" +
" </BANKACCTFROM>" +
" <BANKTRANLIST>" +
" <STMTTRN>" +
" <TRNTYPE>DEP</TRNTYPE>" +
" <DTPOSTED>20240901012345.000[+8:CST]</DTPOSTED>" +
" <TRNAMT>123.45</TRNAMT>" +
" </STMTTRN>" +
" </BANKTRANLIST>" +
" </STMTRS>" +
" </STMTTRNRS>" +
" </BANKMSGSRSV1>" +
"</OFX>"))
assert.Nil(t, err)
ofxFile, err := reader.read(context)
assert.Nil(t, err)
assert.NotNil(t, ofxFile)
assert.NotNil(t, ofxFile.BankMessageResponseV1)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse)
assert.Equal(t, "CNY", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.DefaultCurrency)
assert.NotNil(t, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.AccountFrom)
assert.Equal(t, "123", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.AccountFrom.AccountId)
assert.Equal(t, 1, len(ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions))
assert.Equal(t, ofxDepositTransaction, ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].TransactionType)
assert.Equal(t, "20240901012345.000[+8:CST]", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].PostedDate)
assert.Equal(t, "123.45", ofxFile.BankMessageResponseV1.StatementTransactionResponse.StatementResponse.TransactionList.StatementTransactions[0].Amount)
}