File: walk_test.go

package info (click to toggle)
golang-github-vektah-gqlparser 2.5.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,748 kB
  • sloc: javascript: 164; sh: 46; makefile: 10
file content (52 lines) | stat: -rw-r--r-- 1,404 bytes parent folder | download
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)
}