package model import ( "testing" "github.com/stretchr/testify/require" ) func TestJSONValueScanCopiesByteInputAndSupportsStringAndNil(t *testing.T) { input := []byte(`{"items":["a"]}`) var value JSONValue require.NoError(t, value.Scan(input)) input[2] = 'X' require.Equal(t, `{"items":["a"]}`, string(value)) require.NoError(t, value.Scan(`{"items":["b"]}`)) require.Equal(t, `{"items":["b"]}`, string(value)) require.NoError(t, value.Scan(nil)) require.Nil(t, value) } func TestJSONValueDatabaseAndJSONMarshallingPreservesRawPayload(t *testing.T) { value := JSONValue(`{"models":["gpt-5"]}`) databaseValue, err := value.Value() require.NoError(t, err) require.Equal(t, []byte(`{"models":["gpt-5"]}`), databaseValue) encoded, err := value.MarshalJSON() require.NoError(t, err) require.Equal(t, []byte(`{"models":["gpt-5"]}`), encoded) var decoded JSONValue require.NoError(t, decoded.UnmarshalJSON([]byte(`["a","b"]`))) require.Equal(t, `["a","b"]`, string(decoded)) var nilValue JSONValue encoded, err = nilValue.MarshalJSON() require.NoError(t, err) require.Equal(t, []byte("null"), encoded) }