22 lines
617 B
Go
22 lines
617 B
Go
package db
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func AssertForeignKeyError[T ForeignKey](t *testing.T, err error, field string, val T) {
|
|
t.Helper()
|
|
|
|
var fkErr ForeignKeyError[T]
|
|
require.Error(t, err)
|
|
require.ErrorIs(t, err, ErrForeignKeyViolation)
|
|
// ErrorAs produces terrible error messages if it's a ForeignKeyError with a different type
|
|
// parameter (i.e., if it was a different field that failed).
|
|
require.ErrorAs(t, err, &fkErr, "expected error field: %q", field)
|
|
assert.Equal(t, field, fkErr.Field)
|
|
assert.Equal(t, val, fkErr.FkValue)
|
|
}
|