...
1 package followschema
2
3 import (
4 "context"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8
9 "github.com/99designs/gqlgen/client"
10 "github.com/99designs/gqlgen/graphql/handler"
11 )
12
13 func TestPrimitiveObjects(t *testing.T) {
14 resolvers := &Stub{}
15 resolvers.QueryResolver.PrimitiveObject = func(ctx context.Context) (out []Primitive, e error) {
16 return []Primitive{2, 4}, nil
17 }
18
19 resolvers.PrimitiveResolver.Value = func(ctx context.Context, obj *Primitive) (i int, e error) {
20 return int(*obj), nil
21 }
22
23 c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
24
25 t.Run("can fetch value", func(t *testing.T) {
26 var resp struct {
27 PrimitiveObject []struct {
28 Value int
29 Squared int
30 }
31 }
32 c.MustPost(`query { primitiveObject { value, squared } }`, &resp)
33
34 assert.Equal(t, 2, resp.PrimitiveObject[0].Value)
35 assert.Equal(t, 4, resp.PrimitiveObject[0].Squared)
36 assert.Equal(t, 4, resp.PrimitiveObject[1].Value)
37 assert.Equal(t, 16, resp.PrimitiveObject[1].Squared)
38 })
39 }
40
41 func TestPrimitiveStringObjects(t *testing.T) {
42 resolvers := &Stub{}
43 resolvers.QueryResolver.PrimitiveStringObject = func(ctx context.Context) (out []PrimitiveString, e error) {
44 return []PrimitiveString{"hello", "world"}, nil
45 }
46
47 resolvers.PrimitiveStringResolver.Value = func(ctx context.Context, obj *PrimitiveString) (i string, e error) {
48 return string(*obj), nil
49 }
50
51 resolvers.PrimitiveStringResolver.Len = func(ctx context.Context, obj *PrimitiveString) (i int, e error) {
52 return len(string(*obj)), nil
53 }
54
55 c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
56
57 t.Run("can fetch value", func(t *testing.T) {
58 var resp struct {
59 PrimitiveStringObject []struct {
60 Value string
61 Doubled string
62 Len int
63 }
64 }
65 c.MustPost(`query { primitiveStringObject { value, doubled, len } }`, &resp)
66
67 assert.Equal(t, "hello", resp.PrimitiveStringObject[0].Value)
68 assert.Equal(t, "hellohello", resp.PrimitiveStringObject[0].Doubled)
69 assert.Equal(t, 5, resp.PrimitiveStringObject[0].Len)
70 assert.Equal(t, "world", resp.PrimitiveStringObject[1].Value)
71 assert.Equal(t, "worldworld", resp.PrimitiveStringObject[1].Doubled)
72 assert.Equal(t, 5, resp.PrimitiveStringObject[1].Len)
73 })
74 }
75
View as plain text