github.com/99designs/gqlgen@v0.17.45/codegen/testserver/singlefile/embedded_test.go (about) 1 package singlefile 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 }