Files
hfb_sys/backend/internal/modules/wallet/repository_test.go
T
2026-06-08 23:56:25 +08:00

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,
FrozenBalance: 606.41,
}
entry := Entry{
UserID: 7,
Direction: "out",
Amount: 406.41 + 200.00,
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.FrozenBalance != 0 {
t.Fatalf("FrozenBalance = %v, want 0", account.FrozenBalance)
}
}
func TestApplyEntryKeepsWalletMoneyAtJiaoPrecision(t *testing.T) {
account := model.WalletAccount{
UserID: 8,
AvailableBalance: 0,
}
entry := Entry{
UserID: 8,
Direction: "in",
Amount: 2.30,
BalanceType: "available",
}
balanceAfter, err := applyEntry(&account, entry)
if err != nil {
t.Fatalf("applyEntry() error = %v", err)
}
if balanceAfter != 2.3 {
t.Fatalf("balanceAfter = %v, want 2.3", balanceAfter)
}
if account.AvailableBalance != 2.3 {
t.Fatalf("AvailableBalance = %v, want 2.3", account.AvailableBalance)
}
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)
}
}