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

Function TestUpdateLedger_UniqueViolation

database/ledger_test.go:306–331  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

304}
305
306func TestUpdateLedger_UniqueViolation(t *testing.T) {
307 db, mock, err := sqlmock.New()
308 assert.NoError(t, err)
309 defer func() { _ = db.Close() }()
310
311 ds := Datasource{Conn: db}
312
313 metaData := map[string]interface{}{"key": "value"}
314 metaDataJSON, err := json.Marshal(metaData)
315 assert.NoError(t, err)
316
317 mock.ExpectQuery("SELECT ledger_id, name, created_at, meta_data FROM ledgerforge.ledgers WHERE ledger_id = ?").
318 WithArgs("ldg1").
319 WillReturnRows(sqlmock.NewRows([]string{"ledger_id", "name", "created_at", "meta_data"}).
320 AddRow("ldg1", "Old Name", time.Now(), metaDataJSON))
321
322 mock.ExpectExec("UPDATE ledgerforge.ledgers SET name").
323 WithArgs("Duplicate Name", "ldg1").
324 WillReturnError(&pq.Error{Code: "23505", Message: "unique_violation"})
325
326 _, err = ds.UpdateLedger("ldg1", "Duplicate Name")
327 assert.Error(t, err)
328 apiErr, ok := err.(apierror.APIError)
329 assert.True(t, ok)
330 assert.Equal(t, apierror.ErrConflict, apiErr.Code)
331}

Callers

nothing calls this directly

Calls 3

UpdateLedgerMethod · 0.95
CloseMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected