MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / TestCreateBalance_Success

Function TestCreateBalance_Success

database/balance_test.go:56–86  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

54}
55
56func TestCreateBalance_Success(t *testing.T) {
57 db, mock, err := sqlmock.New()
58 assert.NoError(t, err)
59 defer func() { _ = db.Close() }()
60
61 ds := Datasource{Conn: db}
62
63 balance := model.Balance{
64 Balance: big.NewInt(1000),
65 CreditBalance: big.NewInt(500),
66 DebitBalance: big.NewInt(500),
67 Currency: "USD",
68 CurrencyMultiplier: 100,
69 LedgerID: "ldg1",
70 MetaData: map[string]interface{}{
71 "key": "value",
72 },
73 }
74
75 metaDataJSON, err := json.Marshal(balance.MetaData)
76 assert.NoError(t, err)
77
78 mock.ExpectExec("INSERT INTO ledgerforge.balances").
79 WithArgs(sqlmock.AnyArg(), balance.Balance.String(), balance.CreditBalance.String(), balance.DebitBalance.String(), balance.Currency, balance.CurrencyMultiplier, balance.LedgerID, sqlmock.AnyArg(), sqlmock.AnyArg(), sqlmock.AnyArg(), metaDataJSON, false, "FIFO").
80 WillReturnResult(sqlmock.NewResult(1, 1))
81
82 createdBalance, err := ds.CreateBalance(balance)
83 assert.NoError(t, err)
84 assert.NotEmpty(t, createdBalance.BalanceID)
85 assert.WithinDuration(t, time.Now(), createdBalance.CreatedAt, time.Second)
86}
87
88func TestCreateBalance_UniqueViolation(t *testing.T) {
89 db, mock, err := sqlmock.New()

Callers

nothing calls this directly

Calls 2

CreateBalanceMethod · 0.95
CloseMethod · 0.45

Tested by

no test coverage detected