您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

42 行
1.1 KiB

  1. package model
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. )
  6. func TestJSONValueScanCopiesByteInputAndSupportsStringAndNil(t *testing.T) {
  7. input := []byte(`{"items":["a"]}`)
  8. var value JSONValue
  9. require.NoError(t, value.Scan(input))
  10. input[2] = 'X'
  11. require.Equal(t, `{"items":["a"]}`, string(value))
  12. require.NoError(t, value.Scan(`{"items":["b"]}`))
  13. require.Equal(t, `{"items":["b"]}`, string(value))
  14. require.NoError(t, value.Scan(nil))
  15. require.Nil(t, value)
  16. }
  17. func TestJSONValueDatabaseAndJSONMarshallingPreservesRawPayload(t *testing.T) {
  18. value := JSONValue(`{"models":["gpt-5"]}`)
  19. databaseValue, err := value.Value()
  20. require.NoError(t, err)
  21. require.Equal(t, []byte(`{"models":["gpt-5"]}`), databaseValue)
  22. encoded, err := value.MarshalJSON()
  23. require.NoError(t, err)
  24. require.Equal(t, []byte(`{"models":["gpt-5"]}`), encoded)
  25. var decoded JSONValue
  26. require.NoError(t, decoded.UnmarshalJSON([]byte(`["a","b"]`)))
  27. require.Equal(t, `["a","b"]`, string(decoded))
  28. var nilValue JSONValue
  29. encoded, err = nilValue.MarshalJSON()
  30. require.NoError(t, err)
  31. require.Equal(t, []byte("null"), encoded)
  32. }