diff --git a/tests/postgres/json_test.go b/tests/postgres/json_test.go index eaa37a2..4b05a8b 100644 --- a/tests/postgres/json_test.go +++ b/tests/postgres/json_test.go @@ -3,11 +3,7 @@ package postgres import ( "encoding/json" "testing" - "time" - "github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/test_sample/model" - "github.com/google/uuid" - "github.com/lib/pq" "github.com/stretchr/testify/require" . "github.com/go-jet/jet/v2/postgres" @@ -15,82 +11,30 @@ import ( ) type AllTypesJsonRawMessageResult struct { - SmallIntPtr *int16 `alias:"all_types.small_int_ptr"` - SmallInt int16 `alias:"all_types.small_int"` - IntegerPtr *int32 `alias:"all_types.integer_ptr"` - Integer int32 `alias:"all_types.integer"` - BigIntPtr *int64 `alias:"all_types.big_int_ptr"` - BigInt int64 `alias:"all_types.big_int"` - DecimalPtr *float64 `alias:"all_types.decimal_ptr"` - Decimal float64 `alias:"all_types.decimal"` - NumericPtr *float64 `alias:"all_types.numeric_ptr"` - Numeric float64 `alias:"all_types.numeric"` - RealPtr *float32 `alias:"all_types.real_ptr"` - Real float32 `alias:"all_types.real"` - DoublePrecisionPtr *float64 `alias:"all_types.double_precision_ptr"` - DoublePrecision float64 `alias:"all_types.double_precision"` - Smallserial int64 `alias:"all_types.smallserial"` - Serial int64 `sql:"primary_key" alias:"all_types.serial"` - Bigserial int64 `alias:"all_types.bigserial"` - VarCharPtr *string `alias:"all_types.var_char_ptr"` - VarChar string `alias:"all_types.var_char"` - CharPtr *string `alias:"all_types.char_ptr"` - Char string `alias:"all_types.char"` - TextPtr *string `alias:"all_types.text_ptr"` - Text string `alias:"all_types.text"` - ByteaPtr *[]byte `alias:"all_types.bytea_ptr"` - Bytea []byte `alias:"all_types.bytea"` - TimestampzPtr *time.Time `alias:"all_types.timestampz_ptr"` - Timestampz time.Time `alias:"all_types.timestampz"` - TimestampPtr *time.Time `alias:"all_types.timestamp_ptr"` - Timestamp time.Time `alias:"all_types.timestamp"` - DatePtr *time.Time `alias:"all_types.date_ptr"` - Date time.Time `alias:"all_types.date"` - TimezPtr *time.Time `alias:"all_types.timez_ptr"` - Timez time.Time `alias:"all_types.timez"` - TimePtr *time.Time `alias:"all_types.time_ptr"` - Time time.Time `alias:"all_types.time"` - IntervalPtr *string `alias:"all_types.interval_ptr"` - Interval string `alias:"all_types.interval"` - BooleanPtr *bool `alias:"all_types.boolean_ptr"` - Boolean bool `alias:"all_types.boolean"` - PointPtr *string `alias:"all_types.point_ptr"` - BitPtr *string `alias:"all_types.bit_ptr"` - Bit string `alias:"all_types.bit"` - BitVaryingPtr *string `alias:"all_types.bit_varying_ptr"` - BitVarying string `alias:"all_types.bit_varying"` - TsvectorPtr *string `alias:"all_types.tsvector_ptr"` - Tsvector string `alias:"all_types.tsvector"` - UUIDPtr *uuid.UUID `alias:"all_types.uuid_ptr"` - UUID uuid.UUID `alias:"all_types.uuid"` - XMLPtr *string `alias:"all_types.xml_ptr"` - XML string `alias:"all_types.xml"` - JSONPtr *string `alias:"all_types.json_ptr"` - JSON string `alias:"all_types.json"` - JsonbPtr *json.RawMessage `alias:"all_types.jsonb_ptr"` - Jsonb json.RawMessage `alias:"all_types.jsonb"` - IntegerArrayPtr *pq.Int32Array `alias:"all_types.integer_array_ptr"` - IntegerArray pq.Int32Array `alias:"all_types.integer_array"` - TextArrayPtr *pq.StringArray `alias:"all_types.text_array_ptr"` - TextArray pq.StringArray `alias:"all_types.text_array"` - JsonbArray pq.StringArray `alias:"all_types.jsonb_array"` - TextMultiDimArrayPtr *string `alias:"all_types.text_multi_dim_array_ptr"` - TextMultiDimArray string `alias:"all_types.text_multi_dim_array"` - MoodPtr *model.Mood `alias:"all_types.mood_ptr"` - Mood model.Mood `alias:"all_types.mood"` + JSON string `alias:"all_types.json"` + JsonbPtr *json.RawMessage `alias:"all_types.jsonb_ptr"` + Jsonb json.RawMessage `alias:"all_types.jsonb"` } func TestJsonRawMessage(t *testing.T) { var dest []AllTypesJsonRawMessageResult - err := SELECT(AllTypes.AllColumns). + err := SELECT(AllTypes.JSON, AllTypes.JsonbPtr, AllTypes.Jsonb). FROM(AllTypes). LIMIT(2). QueryContext(ctx, db, &dest) require.NoError(t, err) + require.Len(t, dest, 2) - for _, row := range dest { - t.Logf("%+v", string(row.Jsonb)) - } + // Row 0: JSON, Jsonb, and JsonbPtr all set + require.JSONEq(t, allTypesRow0.JSON, dest[0].JSON) + require.JSONEq(t, allTypesRow0.Jsonb, string(dest[0].Jsonb)) + require.NotNil(t, dest[0].JsonbPtr) + require.JSONEq(t, *allTypesRow0.JsonbPtr, string(*dest[0].JsonbPtr)) + + // Row 1: JSON and Jsonb set, JsonbPtr is nil + require.JSONEq(t, allTypesRow1.JSON, dest[1].JSON) + require.JSONEq(t, allTypesRow1.Jsonb, string(dest[1].Jsonb)) + require.Nil(t, dest[1].JsonbPtr) }