1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2024-12-26 23:42:29 -05:00

testing: More thoroughly test fetching account transactions

This commit is contained in:
Aaron Lindsay 2017-10-31 20:53:18 -04:00
parent 8ba6a3dbf2
commit 9721c04e52
2 changed files with 111 additions and 59 deletions

View File

@ -252,6 +252,25 @@ var data = []TestData{
}, },
}, },
}, },
handlers.Transaction{
UserId: 0,
Description: "weekly groceries",
Date: time.Date(2017, time.October, 31, 19, 10, 14, 0, time.UTC),
Splits: []*handlers.Split{
&handlers.Split{
Status: handlers.Reconciled,
AccountId: 1,
SecurityId: -1,
Amount: "-81.59",
},
&handlers.Split{
Status: handlers.Reconciled,
AccountId: 3,
SecurityId: -1,
Amount: "81.59",
},
},
},
handlers.Transaction{ handlers.Transaction{
UserId: 0, UserId: 0,
Description: "Cable", Description: "Cable",

View File

@ -351,16 +351,44 @@ func TestDeleteTransaction(t *testing.T) {
}) })
} }
func TestAccountTransactions(t *testing.T) { func helperTestAccountTransactions(t *testing.T, d *TestData, account *handlers.Account, limit int64, sort string) {
RunWith(t, &data[0], func(t *testing.T, d *TestData) {
for _, account := range d.accounts {
if account.UserId != d.users[0].UserId { if account.UserId != d.users[0].UserId {
continue return
} }
atl, err := getAccountTransactions(d.clients[0], account.AccountId, 0, 0, "date-desc")
var transactions []handlers.Transaction
var lastFetchCount int64
for page := int64(0); page == 0 || lastFetchCount > 0; page++ {
atl, err := getAccountTransactions(d.clients[0], account.AccountId, page, limit, sort)
if err != nil { if err != nil {
t.Fatalf("Error fetching account transactions: %s\n", err) t.Fatalf("Error fetching account transactions: %s\n", err)
} }
if limit != 0 && atl.Transactions != nil && int64(len(*atl.Transactions)) > limit {
t.Errorf("Exceeded limit of %d transactions (returned %d)\n", limit, len(*atl.Transactions))
}
if atl.Transactions != nil {
for _, tran := range *atl.Transactions {
transactions = append(transactions, tran)
}
lastFetchCount = int64(len(*atl.Transactions))
} else {
lastFetchCount = -1
}
}
var lastDate time.Time
for _, tran := range transactions {
if lastDate.IsZero() {
lastDate = tran.Date
continue
} else if sort == "date-desc" && lastDate.Before(tran.Date) {
t.Errorf("Sorted by date-desc, but later transaction has later date")
} else if sort == "date-asc" && lastDate.After(tran.Date) {
t.Errorf("Sorted by date-asc, but later transaction has earlier date")
}
lastDate = tran.Date
}
numtransactions := 0 numtransactions := 0
foundIds := make(map[int64]bool) foundIds := make(map[int64]bool)
@ -387,8 +415,7 @@ func TestAccountTransactions(t *testing.T) {
numtransactions += 1 numtransactions += 1
found := false found := false
if atl.Transactions != nil { for _, tran := range transactions {
for _, tran := range *atl.Transactions {
if tran.TransactionId == curr.TransactionId { if tran.TransactionId == curr.TransactionId {
ensureTransactionsMatch(t, &curr, &tran, nil, true, true) ensureTransactionsMatch(t, &curr, &tran, nil, true, true)
if _, ok := foundIds[tran.TransactionId]; ok { if _, ok := foundIds[tran.TransactionId]; ok {
@ -399,20 +426,26 @@ func TestAccountTransactions(t *testing.T) {
break break
} }
} }
}
if !found { if !found {
t.Errorf("Unable to find matching transaction: %+v", curr) t.Errorf("Unable to find matching transaction: %+v", curr)
t.Errorf("Transactions: %+v\n", atl.Transactions) t.Errorf("Transactions: %+v\n", transactions)
} }
} }
if atl.Transactions == nil { if numtransactions != len(transactions) {
if numtransactions != 0 { t.Fatalf("Expected %d transactions, received %d", numtransactions, len(transactions))
t.Fatalf("Expected %d transactions, received 0", numtransactions)
} }
} else if numtransactions != len(*atl.Transactions) {
t.Fatalf("Expected %d transactions, received %d", numtransactions, len(*atl.Transactions))
} }
func TestAccountTransactions(t *testing.T) {
RunWith(t, &data[0], func(t *testing.T, d *TestData) {
for _, account := range d.accounts {
helperTestAccountTransactions(t, d, &account, 0, "date-desc")
helperTestAccountTransactions(t, d, &account, 0, "date-asc")
helperTestAccountTransactions(t, d, &account, 1, "date-desc")
helperTestAccountTransactions(t, d, &account, 1, "date-asc")
helperTestAccountTransactions(t, d, &account, 2, "date-desc")
helperTestAccountTransactions(t, d, &account, 2, "date-asc")
} }
}) })
} }