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  }