72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package wallet
|
|
|
|
import (
|
|
"regexp"
|
|
"testing"
|
|
|
|
"hfb_sys/backend/internal/model"
|
|
)
|
|
|
|
func TestApplyEntryRoundsMoneyBeforeComparing(t *testing.T) {
|
|
account := model.WalletAccount{
|
|
UserID: 7,
|
|
FrozenBalanceCent: 60641,
|
|
}
|
|
entry := Entry{
|
|
UserID: 7,
|
|
Direction: "out",
|
|
AmountCent: 60641,
|
|
BalanceType: "frozen",
|
|
}
|
|
|
|
balanceAfter, err := applyEntry(&account, entry)
|
|
if err != nil {
|
|
t.Fatalf("applyEntry() error = %v", err)
|
|
}
|
|
if balanceAfter != 0 {
|
|
t.Fatalf("balanceAfter = %v, want 0", balanceAfter)
|
|
}
|
|
if account.FrozenBalanceCent != 0 {
|
|
t.Fatalf("FrozenBalanceCent = %d, want 0", account.FrozenBalanceCent)
|
|
}
|
|
}
|
|
|
|
func TestApplyEntryKeepsWalletMoneyAtJiaoPrecision(t *testing.T) {
|
|
account := model.WalletAccount{
|
|
UserID: 8,
|
|
AvailableBalanceCent: 0,
|
|
}
|
|
entry := Entry{
|
|
UserID: 8,
|
|
Direction: "in",
|
|
AmountCent: 230,
|
|
BalanceType: "available",
|
|
}
|
|
|
|
balanceAfter, err := applyEntry(&account, entry)
|
|
if err != nil {
|
|
t.Fatalf("applyEntry() error = %v", err)
|
|
}
|
|
if balanceAfter != 230 {
|
|
t.Fatalf("balanceAfter = %d, want 230", balanceAfter)
|
|
}
|
|
if account.AvailableBalanceCent != 230 {
|
|
t.Fatalf("AvailableBalanceCent = %d, want 230", account.AvailableBalanceCent)
|
|
}
|
|
|
|
if rounded := roundWalletMoney(2.36); rounded != 2.4 {
|
|
t.Fatalf("roundWalletMoney(2.36) = %v, want 2.4", rounded)
|
|
}
|
|
}
|
|
|
|
func TestNewLedgerNoUsesReadableFormat(t *testing.T) {
|
|
ledgerNo, err := newLedgerNo()
|
|
if err != nil {
|
|
t.Fatalf("newLedgerNo() error = %v", err)
|
|
}
|
|
matched := regexp.MustCompile(`^WL\d{21}$`).MatchString(ledgerNo)
|
|
if !matched {
|
|
t.Fatalf("ledgerNo = %q, want WL + 21 digits", ledgerNo)
|
|
}
|
|
}
|