@@ -3,6 +3,8 @@ package graphql.analysis
33import graphql.TestUtil
44import graphql.language.Document
55import graphql.language.Field
6+ import graphql.language.FragmentDefinition
7+ import graphql.language.InlineFragment
68import graphql.parser.Parser
79import graphql.schema.GraphQLSchema
810import spock.lang.Specification
@@ -46,12 +48,15 @@ class QueryTraversalTest extends Specification {
4648 queryTraversal. visitPreOrder(visitor)
4749
4850 then :
49- 1 * visitor. visitField({ QueryVisitorEnvironment it -> it. field. name == " foo" && it. fieldDefinition. type. name == " Foo" && it. parentType. name == " Query" })
51+ 1 * visitor. visitField({ QueryVisitorEnvironment it -> it. field. name == " foo" && it. fieldDefinition. type. name == " Foo" && it. parentType. name == " Query" &&
52+ it. selectionSetContainer == null })
5053 then :
5154 1 * visitor. visitField({ QueryVisitorEnvironment it ->
5255 it. field. name == " subFoo" && it. fieldDefinition. type. name == " String" &&
5356 it. parentType. name == " Foo" &&
54- it. parentEnvironment. field. name == " foo" && it. parentEnvironment. fieldDefinition. type. name == " Foo"
57+ it. parentEnvironment. field. name == " foo" && it. parentEnvironment. fieldDefinition. type. name == " Foo" &&
58+ it. selectionSetContainer == it. parentEnvironment. field
59+
5560 })
5661 then :
5762 1 * visitor. visitField({ QueryVisitorEnvironment it -> it. field. name == " bar" && it. fieldDefinition. type. name == " String" && it. parentType. name == " Query" })
@@ -293,11 +298,13 @@ class QueryTraversalTest extends Specification {
293298 }
294299 """ )
295300 QueryTraversal queryTraversal = createQueryTraversal(query, schema)
301+ def inlineFragment = query.children[0].children[0].children[1]
302+ assert inlineFragment instanceof InlineFragment
296303 when:
297304 queryTraversal."$visitFn "(visitor)
298305
299306 then:
300- 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "foo" && it.fieldDefinition.type.name == "Foo" && it.parentType.name == "Query" })
307+ 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "foo" && it.fieldDefinition.type.name == "Foo" && it.parentType.name == "Query" && it.selectionSetContainer == inlineFragment })
301308 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "bar" && it.fieldDefinition.type.name == "String" && it.parentType.name == "Query" })
302309 1 * visitor.visitField({ QueryVisitorEnvironment it ->
303310 it.field.name == "subFoo" && it.fieldDefinition.type.name == "String" &&
@@ -381,11 +388,13 @@ class QueryTraversalTest extends Specification {
381388
382389 """ )
383390 QueryTraversal queryTraversal = createQueryTraversal(query, schema)
391+ def fragmentDefinition = query.children[1]
392+ assert fragmentDefinition instanceof FragmentDefinition
384393 when:
385394 queryTraversal."$visitFn "(visitor)
386395
387396 then:
388- 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "foo" && it.fieldDefinition.type.name == "Foo" && it.parentType.name == "Query" })
397+ 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "foo" && it.fieldDefinition.type.name == "Foo" && it.parentType.name == "Query" && it.selectionSetContainer == fragmentDefinition })
389398 1 * visitor.visitField({ QueryVisitorEnvironment it -> it.field.name == "bar" && it.fieldDefinition.type.name == "String" && it.parentType.name == "Query" })
390399 1 * visitor.visitField({ QueryVisitorEnvironment it ->
391400 it.field.name == "subFoo" && it.fieldDefinition.type.name == "String" &&
@@ -902,7 +911,7 @@ class QueryTraversalTest extends Specification {
902911 def query = createQuery("""
903912 {foo { subFoo {id}} }
904913 """ )
905- def root = query.getChildren() [0].getChildren() [0].getChildren() [0].getChildren() [0].getChildren() [0]
914+ def root = query.children [0].children [0].children [0].children [0].children [0]
906915 assert root instanceof Field
907916 ((Field)root).name == "subFoo"
908917 def rootParentType = schema.getType("Foo")
0 commit comments