...

Source file src/github.com/99designs/gqlgen/codegen/testserver/followschema/embedded_test.go

Documentation: github.com/99designs/gqlgen/codegen/testserver/followschema

     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