github.com/jackc/pgx/v5@v5.5.5/pgtype/enum_codec_test.go (about) 1 package pgtype_test 2 3 import ( 4 "context" 5 "testing" 6 7 pgx "github.com/jackc/pgx/v5" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestEnumCodec(t *testing.T) { 12 defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { 13 14 _, err := conn.Exec(ctx, `drop type if exists enum_test; 15 16 create type enum_test as enum ('foo', 'bar', 'baz');`) 17 require.NoError(t, err) 18 defer conn.Exec(ctx, "drop type enum_test") 19 20 dt, err := conn.LoadType(ctx, "enum_test") 21 require.NoError(t, err) 22 23 conn.TypeMap().RegisterType(dt) 24 25 var s string 26 err = conn.QueryRow(ctx, `select 'foo'::enum_test`).Scan(&s) 27 require.NoError(t, err) 28 require.Equal(t, "foo", s) 29 30 err = conn.QueryRow(ctx, `select $1::enum_test`, "bar").Scan(&s) 31 require.NoError(t, err) 32 require.Equal(t, "bar", s) 33 34 err = conn.QueryRow(ctx, `select 'foo'::enum_test`).Scan(&s) 35 require.NoError(t, err) 36 require.Equal(t, "foo", s) 37 38 err = conn.QueryRow(ctx, `select $1::enum_test`, "bar").Scan(&s) 39 require.NoError(t, err) 40 require.Equal(t, "bar", s) 41 42 err = conn.QueryRow(ctx, `select 'baz'::enum_test`).Scan(&s) 43 require.NoError(t, err) 44 require.Equal(t, "baz", s) 45 }) 46 } 47 48 func TestEnumCodecValues(t *testing.T) { 49 defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { 50 51 _, err := conn.Exec(ctx, `drop type if exists enum_test; 52 53 create type enum_test as enum ('foo', 'bar', 'baz');`) 54 require.NoError(t, err) 55 defer conn.Exec(ctx, "drop type enum_test") 56 57 dt, err := conn.LoadType(ctx, "enum_test") 58 require.NoError(t, err) 59 60 conn.TypeMap().RegisterType(dt) 61 62 rows, err := conn.Query(ctx, `select 'foo'::enum_test`) 63 require.NoError(t, err) 64 require.True(t, rows.Next()) 65 values, err := rows.Values() 66 require.NoError(t, err) 67 require.Equal(t, values, []any{"foo"}) 68 }) 69 }