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