...
1 package validator
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7 "github.com/vektah/gqlparser/ast"
8 "github.com/vektah/gqlparser/parser"
9 )
10
11 func TestWalker(t *testing.T) {
12 schema, err := LoadSchema(Prelude, &ast.Source{Input: "type Query { name: String }\n schema { query: Query }"})
13 require.Nil(t, err)
14 query, err := parser.ParseQuery(&ast.Source{Input: "{ as: name }"})
15 require.Nil(t, err)
16
17 called := false
18 observers := &Events{}
19 observers.OnField(func(walker *Walker, field *ast.Field) {
20 called = true
21
22 require.Equal(t, "name", field.Name)
23 require.Equal(t, "as", field.Alias)
24 require.Equal(t, "name", field.Definition.Name)
25 require.Equal(t, "Query", field.ObjectDefinition.Name)
26 })
27
28 Walk(schema, query, observers)
29
30 require.True(t, called)
31 }
32
33 func TestWalkInlineFragment(t *testing.T) {
34 schema, err := LoadSchema(Prelude, &ast.Source{Input: "type Query { name: String }\n schema { query: Query }"})
35 require.Nil(t, err)
36 query, err := parser.ParseQuery(&ast.Source{Input: "{ ... { name } }"})
37 require.Nil(t, err)
38
39 called := false
40 observers := &Events{}
41 observers.OnField(func(walker *Walker, field *ast.Field) {
42 called = true
43
44 require.Equal(t, "name", field.Name)
45 require.Equal(t, "name", field.Definition.Name)
46 require.Equal(t, "Query", field.ObjectDefinition.Name)
47 })
48
49 Walk(schema, query, observers)
50
51 require.True(t, called)
52 }
53
View as plain text