...
1 package followschema
2
3 import (
4 "context"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8
9 "github.com/99designs/gqlgen/client"
10 "github.com/99designs/gqlgen/graphql/handler"
11 )
12
13 type fakeUnexportedEmbeddedInterface struct{}
14
15 func (*fakeUnexportedEmbeddedInterface) UnexportedEmbeddedInterfaceExportedMethod() string {
16 return "UnexportedEmbeddedInterfaceExportedMethod"
17 }
18
19 func TestEmbedded(t *testing.T) {
20 resolver := &Stub{}
21 resolver.QueryResolver.EmbeddedCase1 = func(ctx context.Context) (*EmbeddedCase1, error) {
22 return &EmbeddedCase1{}, nil
23 }
24 resolver.QueryResolver.EmbeddedCase2 = func(ctx context.Context) (*EmbeddedCase2, error) {
25 return &EmbeddedCase2{&unexportedEmbeddedPointer{}}, nil
26 }
27 resolver.QueryResolver.EmbeddedCase3 = func(ctx context.Context) (*EmbeddedCase3, error) {
28 return &EmbeddedCase3{&fakeUnexportedEmbeddedInterface{}}, nil
29 }
30
31 c := client.New(handler.NewDefaultServer(
32 NewExecutableSchema(Config{Resolvers: resolver}),
33 ))
34
35 t.Run("embedded case 1", func(t *testing.T) {
36 var resp struct {
37 EmbeddedCase1 struct {
38 ExportedEmbeddedPointerExportedMethod string
39 }
40 }
41 err := c.Post(`query { embeddedCase1 { exportedEmbeddedPointerExportedMethod } }`, &resp)
42 require.NoError(t, err)
43 require.Equal(t, resp.EmbeddedCase1.ExportedEmbeddedPointerExportedMethod, "ExportedEmbeddedPointerExportedMethodResponse")
44 })
45
46 t.Run("embedded case 2", func(t *testing.T) {
47 var resp struct {
48 EmbeddedCase2 struct {
49 UnexportedEmbeddedPointerExportedMethod string
50 }
51 }
52 err := c.Post(`query { embeddedCase2 { unexportedEmbeddedPointerExportedMethod } }`, &resp)
53 require.NoError(t, err)
54 require.Equal(t, resp.EmbeddedCase2.UnexportedEmbeddedPointerExportedMethod, "UnexportedEmbeddedPointerExportedMethodResponse")
55 })
56
57 t.Run("embedded case 3", func(t *testing.T) {
58 var resp struct {
59 EmbeddedCase3 struct {
60 UnexportedEmbeddedInterfaceExportedMethod string
61 }
62 }
63 err := c.Post(`query { embeddedCase3 { unexportedEmbeddedInterfaceExportedMethod } }`, &resp)
64 require.NoError(t, err)
65 require.Equal(t, resp.EmbeddedCase3.UnexportedEmbeddedInterfaceExportedMethod, "UnexportedEmbeddedInterfaceExportedMethod")
66 })
67 }
68
View as plain text