package dbx import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestJSONB_ScanValue(t *testing.T) { original := JSONB{"key": "value", "num": float64(1)} val, err := original.Value() require.NoError(t, err) var scanned JSONB require.NoError(t, scanned.Scan(val)) assert.Equal(t, original["key"], scanned["key"]) require.NoError(t, scanned.Scan([]byte(`{"a":1}`))) assert.Equal(t, float64(1), scanned["a"]) require.NoError(t, scanned.Scan(`{"b":2}`)) assert.Equal(t, float64(2), scanned["b"]) } func TestJSONB_ScanNil(t *testing.T) { j := JSONB{"x": 1} require.NoError(t, j.Scan(nil)) assert.Nil(t, j) val, err := JSONB(nil).Value() require.NoError(t, err) assert.Nil(t, val) } func TestJSONB_ScanUnsupportedType(t *testing.T) { var j JSONB err := j.Scan(123) assert.Error(t, err) } func TestNewJSONB(t *testing.T) { data := map[string]any{"k": "v"} j := NewJSONB(data) assert.Equal(t, JSONB(data), j) } func TestJSONB_String(t *testing.T) { j := JSONB{"a": "b"} assert.JSONEq(t, `{"a":"b"}`, j.String()) }