Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

42 rader
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. }