(t *testing.T)
| 1154 | } |
| 1155 | |
| 1156 | func TestCreateMonitor_UniqueViolation(t *testing.T) { |
| 1157 | db, mock, err := sqlmock.New() |
| 1158 | assert.NoError(t, err) |
| 1159 | defer func() { _ = db.Close() }() |
| 1160 | |
| 1161 | ds := Datasource{Conn: db} |
| 1162 | |
| 1163 | monitor := model.BalanceMonitor{ |
| 1164 | BalanceID: "bln_123", |
| 1165 | Condition: model.AlertCondition{ |
| 1166 | Field: "balance", |
| 1167 | Operator: "<", |
| 1168 | Value: 1000, |
| 1169 | }, |
| 1170 | } |
| 1171 | |
| 1172 | mock.ExpectExec(regexp.QuoteMeta(` |
| 1173 | INSERT INTO ledgerforge.balance_monitors (monitor_id, balance_id, field, operator, value, precision, precise_value, description, call_back_url, created_at) |
| 1174 | VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) |
| 1175 | `)). |
| 1176 | WithArgs(sqlmock.AnyArg(), monitor.BalanceID, monitor.Condition.Field, monitor.Condition.Operator, monitor.Condition.Value, sqlmock.AnyArg(), sqlmock.AnyArg(), sqlmock.AnyArg(), sqlmock.AnyArg(), sqlmock.AnyArg()). |
| 1177 | WillReturnError(&pq.Error{Code: "23505", Message: "unique_violation"}) |
| 1178 | |
| 1179 | _, err = ds.CreateMonitor(monitor) |
| 1180 | assert.Error(t, err) |
| 1181 | apiErr, ok := err.(apierror.APIError) |
| 1182 | assert.True(t, ok) |
| 1183 | assert.Equal(t, apierror.ErrConflict, apiErr.Code) |
| 1184 | |
| 1185 | err = mock.ExpectationsWereMet() |
| 1186 | assert.NoError(t, err) |
| 1187 | } |
| 1188 | |
| 1189 | func TestCreateMonitor_ForeignKeyViolation(t *testing.T) { |
| 1190 | db, mock, err := sqlmock.New() |
nothing calls this directly
no test coverage detected