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

Function TestCreateBalance_UniqueViolation

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

Source from the content-addressed store, hash-verified

86}
87
88func TestCreateBalance_UniqueViolation(t *testing.T) {
89 db, mock, err := sqlmock.New()
90 assert.NoError(t, err)
91 defer func() { _ = db.Close() }()
92
93 ds := Datasource{Conn: db}
94
95 balance := model.Balance{
96 Balance: big.NewInt(1000),
97 CreditBalance: big.NewInt(500),
98 DebitBalance: big.NewInt(500),
99 Currency: "USD",
100 CurrencyMultiplier: 100,
101 LedgerID: "ldg1",
102 MetaData: map[string]interface{}{
103 "key": "value",
104 },
105 }
106
107 metaDataJSON, err := json.Marshal(balance.MetaData)
108 assert.NoError(t, err)
109
110 mock.ExpectExec("INSERT INTO ledgerforge.balances").
111 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").
112 WillReturnError(&pq.Error{Code: "23505", Message: "unique_violation"})
113
114 _, err = ds.CreateBalance(balance)
115 assert.Error(t, err)
116 apiErr, ok := err.(apierror.APIError)
117 assert.True(t, ok)
118 assert.Equal(t, apierror.ErrConflict, apiErr.Code)
119}
120
121func TestGetBalanceByID_Success(t *testing.T) {
122 db, mock, err := sqlmock.New()

Callers

nothing calls this directly

Calls 3

CreateBalanceMethod · 0.95
CloseMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected