(t *testing.T)
| 304 | } |
| 305 | |
| 306 | func 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 | } |
nothing calls this directly
no test coverage detected