refactor: use GraphQL string scalar for KSUID transit
Marshal and unmarshal both use the base62 KSUID string, replacing the legacy JSON object wrapper and aligning gqlgen scalar behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+24
-20
@@ -3,6 +3,7 @@ package dbx
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"github.com/segmentio/ksuid"
|
||||
@@ -50,16 +51,32 @@ func TestStringKSUID_Conversion(t *testing.T) {
|
||||
|
||||
func TestStringKSUID_GQL(t *testing.T) {
|
||||
id := NewStringKSUID()
|
||||
wire := assertKSUIDGQLMarshal(t, id)
|
||||
|
||||
var parsed StringKSUID
|
||||
require.NoError(t, parsed.UnmarshalGQL(wire))
|
||||
assert.Equal(t, id, parsed)
|
||||
}
|
||||
|
||||
func TestBinaryKSUID_GQL(t *testing.T) {
|
||||
id := NewBinaryKSUID()
|
||||
wire := assertKSUIDGQLMarshal(t, id)
|
||||
|
||||
var parsed BinaryKSUID
|
||||
require.NoError(t, parsed.UnmarshalGQL(wire))
|
||||
assert.Equal(t, id, parsed)
|
||||
}
|
||||
|
||||
func assertKSUIDGQLMarshal(t *testing.T, id interface{ String() string; MarshalGQL(w io.Writer) }) string {
|
||||
t.Helper()
|
||||
|
||||
var buf bytes.Buffer
|
||||
id.MarshalGQL(&buf)
|
||||
|
||||
var transport ksuidGQLTransport
|
||||
require.NoError(t, json.Unmarshal(buf.Bytes(), &transport))
|
||||
assert.Equal(t, id.String(), transport.KSUIDStr)
|
||||
|
||||
var parsed StringKSUID
|
||||
require.NoError(t, parsed.UnmarshalGQL(id.String()))
|
||||
assert.Equal(t, id, parsed)
|
||||
var wire string
|
||||
require.NoError(t, json.Unmarshal(buf.Bytes(), &wire))
|
||||
assert.Equal(t, id.String(), wire)
|
||||
return wire
|
||||
}
|
||||
|
||||
func TestBinaryKSUID_ScanValue(t *testing.T) {
|
||||
@@ -100,19 +117,6 @@ func TestBinaryKSUID_Conversion(t *testing.T) {
|
||||
assert.Equal(t, b, s.AsBinaryKSUID())
|
||||
}
|
||||
|
||||
func TestBinaryKSUID_GQL(t *testing.T) {
|
||||
id := NewBinaryKSUID()
|
||||
var buf bytes.Buffer
|
||||
id.MarshalGQL(&buf)
|
||||
|
||||
var transport ksuidGQLTransport
|
||||
require.NoError(t, json.Unmarshal(buf.Bytes(), &transport))
|
||||
assert.Equal(t, id.String(), transport.KSUIDStr)
|
||||
|
||||
var parsed BinaryKSUID
|
||||
require.NoError(t, parsed.UnmarshalGQL(id.String()))
|
||||
assert.Equal(t, id, parsed)
|
||||
}
|
||||
|
||||
func TestParseStringKSUID(t *testing.T) {
|
||||
id := ksuid.New()
|
||||
|
||||
Reference in New Issue
Block a user