-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror_test.go
More file actions
66 lines (56 loc) · 1.96 KB
/
error_test.go
File metadata and controls
66 lines (56 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package pg
import (
"testing"
// Packages
pgx "github.com/jackc/pgx/v5"
pgconn "github.com/jackc/pgx/v5/pgconn"
assert "github.com/stretchr/testify/assert"
require "github.com/stretchr/testify/require"
)
func Test_NormalizeError_001(t *testing.T) {
assert := assert.New(t)
err := NormalizeError(pgx.ErrNoRows)
assert.ErrorIs(err, ErrNotFound)
assert.False(IsDatabaseError(err))
assert.Empty(SQLState(err))
}
func Test_NormalizeError_002(t *testing.T) {
assert := assert.New(t)
require := require.New(t)
err := NormalizeError(&pgconn.PgError{Code: sqlStateUniqueViolation, Message: "duplicate key value violates unique constraint"})
assert.ErrorIs(err, ErrDatabase)
assert.ErrorIs(err, ErrConflict)
assert.ErrorIs(err, ErrUniqueViolation)
assert.NotErrorIs(err, ErrBadParameter)
assert.True(IsDatabaseError(err))
assert.Equal(sqlStateUniqueViolation, SQLState(err))
var dbErr *DatabaseError
require.ErrorAs(err, &dbErr)
assert.Equal(sqlStateUniqueViolation, dbErr.SQLState())
assert.Equal("duplicate key value violates unique constraint", dbErr.Message())
assert.ErrorAs(err, new(*pgconn.PgError))
}
func Test_NormalizeError_003(t *testing.T) {
tests := []struct {
name string
code string
kind Err
}{
{"foreign_key", sqlStateForeignKeyViolation, ErrForeignKeyViolation},
{"not_null", sqlStateNotNullViolation, ErrNotNullViolation},
{"check", sqlStateCheckViolation, ErrCheckViolation},
{"invalid_text", sqlStateInvalidTextRepresentation, ErrInvalidTextRepresentation},
{"invalid_datetime", sqlStateInvalidDatetimeFormat, ErrInvalidDatetimeFormat},
{"datetime_overflow", sqlStateDatetimeFieldOverflow, ErrDatetimeFieldOverflow},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
assert := assert.New(t)
err := NormalizeError(&pgconn.PgError{Code: tc.code, Message: tc.name})
assert.ErrorIs(err, ErrDatabase)
assert.ErrorIs(err, ErrBadParameter)
assert.ErrorIs(err, tc.kind)
assert.Equal(tc.code, SQLState(err))
})
}
}