|
- 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)
- }
|