github.com/99designs/gqlgen@v0.17.45/codegen/testserver/singlefile/scalar_context_test.go (about) 1 package singlefile 2 3 import ( 4 "context" 5 "math" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/99designs/gqlgen/client" 11 "github.com/99designs/gqlgen/graphql/handler" 12 ) 13 14 func TestFloatInfAndNaN(t *testing.T) { 15 resolvers := &Stub{} 16 17 c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers}))) 18 19 resolvers.QueryResolver.Infinity = func(ctx context.Context) (float64, error) { 20 return math.Inf(-1), nil 21 } 22 23 t.Run("errors on marshaller with context", func(t *testing.T) { 24 err := c.Post(`query { infinity }`, nil) 25 require.Error(t, err) 26 }) 27 } 28 29 func TestContextPassedToMarshal(t *testing.T) { 30 resolvers := &Stub{} 31 32 c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers}))) 33 34 resolvers.QueryResolver.StringFromContextInterface = func(ctx context.Context) (*StringFromContextInterface, error) { 35 return &StringFromContextInterface{}, nil 36 } 37 resolvers.QueryResolver.StringFromContextFunction = func(ctx context.Context) (string, error) { 38 return "", nil 39 } 40 41 var res struct { 42 StringFromContextInterface string 43 StringFromContextFunction string 44 } 45 err := c.Post(`query my_name { 46 stringFromContextInterface 47 stringFromContextFunction 48 }`, &res) 49 require.NoError(t, err) 50 require.Equal(t, "stringFromContextInterface", res.StringFromContextInterface) 51 require.Equal(t, "stringFromContextFunction", res.StringFromContextFunction) 52 }