git.sr.ht/~sircmpwn/gqlgen@v0.0.0-20200522192042-c84d29a1c940/codegen/testserver/wrapped_type_test.go (about) 1 package testserver 2 3 import ( 4 "context" 5 "testing" 6 7 "git.sr.ht/~sircmpwn/gqlgen/client" 8 "git.sr.ht/~sircmpwn/gqlgen/codegen/testserver/otherpkg" 9 "git.sr.ht/~sircmpwn/gqlgen/graphql/handler" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestWrappedTypes(t *testing.T) { 14 resolvers := &Stub{} 15 16 c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers}))) 17 18 resolvers.QueryResolver.WrappedScalar = func(ctx context.Context) (scalar WrappedScalar, e error) { 19 return "hello", nil 20 } 21 22 resolvers.QueryResolver.WrappedStruct = func(ctx context.Context) (wrappedStruct *WrappedStruct, e error) { 23 wrapped := WrappedStruct(otherpkg.Struct{ 24 Name: "hello", 25 }) 26 return &wrapped, nil 27 } 28 29 t.Run("wrapped struct", func(t *testing.T) { 30 var resp struct { 31 WrappedStruct struct { 32 Name string 33 } 34 } 35 36 err := c.Post(`query { wrappedStruct { name } }`, &resp) 37 require.NoError(t, err) 38 39 require.Equal(t, "hello", resp.WrappedStruct.Name) 40 }) 41 42 t.Run("wrapped scalar", func(t *testing.T) { 43 var resp struct { 44 WrappedScalar string 45 } 46 47 err := c.Post(`query { wrappedScalar }`, &resp) 48 require.NoError(t, err) 49 50 require.Equal(t, "hello", resp.WrappedScalar) 51 }) 52 }