1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2024-11-17 03:50:05 -05:00
moneygo/internal/integration/accounts_lua_test.go

78 lines
2.5 KiB
Go

package integration_test
import (
"fmt"
"strconv"
"strings"
"testing"
)
func TestLuaAccounts(t *testing.T) {
RunWith(t, &data[0], func(t *testing.T, d *TestData) {
accounts, err := getAccounts(d.clients[0])
if err != nil {
t.Fatalf("Error getting accounts: %s", err)
}
accountids := make(Int64Slice, len(*accounts.Accounts))
for i, s := range *accounts.Accounts {
accountids[i] = s.AccountId
}
accountids.Sort()
equalityString := ""
for i := range accountids {
for j := range accountids {
if i == j {
equalityString += "true"
} else {
equalityString += "false"
}
}
}
id := d.accounts[3].AccountId
simpleLuaTest(t, d.clients[0], []LuaTest{
{"SecurityId", fmt.Sprintf("return get_accounts()[%d].SecurityId", id), strconv.FormatInt(d.accounts[3].SecurityId, 10)},
{"Security", fmt.Sprintf("return get_accounts()[%d].Security.SecurityId", id), strconv.FormatInt(d.accounts[3].SecurityId, 10)},
{"Parent", fmt.Sprintf("return get_accounts()[%d].Parent.AccountId", id), strconv.FormatInt(d.accounts[3].ParentAccountId, 10)},
{"Name", fmt.Sprintf("return get_accounts()[%d].Name", id), d.accounts[3].Name},
{"Type", fmt.Sprintf("return get_accounts()[%d].Type", id), strconv.FormatInt(int64(d.accounts[3].Type), 10)},
{"TypeName", fmt.Sprintf("return get_accounts()[%d].TypeName", id), d.accounts[3].Type.String()},
{"typename", fmt.Sprintf("return get_accounts()[%d].typename", id), strings.ToLower(d.accounts[3].Type.String())},
{"Balance()", fmt.Sprintf("return get_accounts()[%d]:Balance().Amount", id), "87.19"},
{"Balance(1)", fmt.Sprintf("return get_accounts()[%d]:Balance(date.new('2017-10-30')).Amount", id), "5.6"},
{"Balance(2)", fmt.Sprintf("return get_accounts()[%d]:Balance(date.new(2017, 10, 30), date.new('2017-11-01')).Amount", id), "81.59"},
{"__tostring", fmt.Sprintf("return get_accounts()[%d]", id), "Expenses/Groceries"},
{"__eq", `
accounts = get_accounts()
sorted = {}
for id in pairs(accounts) do
table.insert(sorted, id)
end
str = ""
table.sort(sorted)
for i,idi in ipairs(sorted) do
for j,idj in ipairs(sorted) do
if accounts[idi] == accounts[idj] then
str = str .. "true"
else
str = str .. "false"
end
end
end
return str`, equalityString},
{"get_accounts()", `
sorted = {}
for id in pairs(get_accounts()) do
table.insert(sorted, id)
end
table.sort(sorted)
str = "["
for i,id in ipairs(sorted) do
str = str .. id .. " "
end
return string.sub(str, 1, -2) .. "]"`, fmt.Sprint(accountids)},
})
})
}