@@ -12,11 +12,14 @@ import graphql.schema.GraphQLObjectType
1212import graphql.schema.GraphQLScalarType
1313import graphql.schema.GraphQLSchema
1414import graphql.schema.GraphQLType
15+ import graphql.schema.GraphQLUnionType
1516import graphql.schema.TypeResolver
1617import spock.lang.Specification
1718
1819import java.util.function.UnaryOperator
1920
21+ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition
22+
2023class SchemaPrinterTest extends Specification {
2124
2225 def nonNull (GraphQLType type ) {
@@ -228,7 +231,7 @@ type Subscription {
228231
229232 def " prints object description as comment" () {
230233 given :
231- GraphQLFieldDefinition fieldDefinition = GraphQLFieldDefinition . newFieldDefinition()
234+ GraphQLFieldDefinition fieldDefinition = newFieldDefinition()
232235 .name(" field" ). type(Scalars.GraphQLString ). build()
233236 def queryType = GraphQLObjectType . newObject(). name(" Query" ). description(" About Query\n Second Line" ). field(fieldDefinition). build()
234237 def schema = GraphQLSchema . newSchema(). query(queryType). build()
@@ -247,7 +250,7 @@ type Query {
247250
248251 def " prints field description as comment" () {
249252 given :
250- GraphQLFieldDefinition fieldDefinition = GraphQLFieldDefinition . newFieldDefinition()
253+ GraphQLFieldDefinition fieldDefinition = newFieldDefinition()
251254 .name(" field" ). description(" About field\n second" ). type(Scalars.GraphQLString ). build()
252255 def queryType = GraphQLObjectType . newObject(). name(" Query" ). field(fieldDefinition). build()
253256 def schema = GraphQLSchema . newSchema(). query(queryType). build()
@@ -272,7 +275,7 @@ type Query {
272275 .description(" About enum" )
273276 .value(" value" , " value" , " value desc" )
274277 .build()
275- GraphQLFieldDefinition fieldDefinition = GraphQLFieldDefinition . newFieldDefinition()
278+ GraphQLFieldDefinition fieldDefinition = newFieldDefinition()
276279 .name(" field" ). type(graphQLEnumType). build()
277280 def queryType = GraphQLObjectType . newObject(). name(" Query" ). field(fieldDefinition). build()
278281 def schema = GraphQLSchema . newSchema(). query(queryType). build()
@@ -290,6 +293,79 @@ enum Enum {
290293 value
291294}
292295
296+ """
297+
298+ }
299+
300+ def " prints union description as comment" () {
301+ given :
302+ GraphQLFieldDefinition fieldDefinition = newFieldDefinition()
303+ .name(" field" ). type(Scalars.GraphQLString ). build()
304+ def possibleType = GraphQLObjectType . newObject(). name(" PossibleType" ). field(fieldDefinition). build()
305+ GraphQLUnionType unionType = GraphQLUnionType . newUnionType()
306+ .name(" Union" )
307+ .description(" About union" )
308+ .possibleType(possibleType)
309+ .typeResolver({ it -> null })
310+ .build()
311+ GraphQLFieldDefinition fieldDefinition2 = newFieldDefinition()
312+ .name(" field" ). type(unionType). build()
313+ def queryType = GraphQLObjectType . newObject(). name(" Query" ). field(fieldDefinition2). build()
314+ def schema = GraphQLSchema . newSchema(). query(queryType). build()
315+ when :
316+ def result = new SchemaPrinter (). print (schema)
317+
318+ then :
319+ result == """ #About union
320+ union Union = PossibleType
321+
322+ type PossibleType {
323+ field : String
324+ }
325+
326+ type Query {
327+ field : Union
328+ }
329+
330+ """
331+
332+ }
333+
334+ def " prints union" () {
335+ def possibleType1 = GraphQLObjectType . newObject(). name(" PossibleType1" ). field(
336+ newFieldDefinition(). name(" field" ). type(Scalars.GraphQLString ). build()
337+ ). build()
338+ def possibleType2 = GraphQLObjectType . newObject(). name(" PossibleType2" ). field(
339+ newFieldDefinition(). name(" field" ). type(Scalars.GraphQLString ). build()
340+ ). build()
341+ GraphQLUnionType unionType = GraphQLUnionType . newUnionType()
342+ .name(" Union" )
343+ .possibleType(possibleType1)
344+ .possibleType(possibleType2)
345+ .typeResolver({ it -> null })
346+ .build()
347+ GraphQLFieldDefinition fieldDefinition2 = newFieldDefinition()
348+ .name(" field" ). type(unionType). build()
349+ def queryType = GraphQLObjectType . newObject(). name(" Query" ). field(fieldDefinition2). build()
350+ def schema = GraphQLSchema . newSchema(). query(queryType). build()
351+ when :
352+ def result = new SchemaPrinter (). print (schema)
353+
354+ then :
355+ result == """ union Union = PossibleType1 | PossibleType2
356+
357+ type PossibleType1 {
358+ field : String
359+ }
360+
361+ type PossibleType2 {
362+ field : String
363+ }
364+
365+ type Query {
366+ field : Union
367+ }
368+
293369"""
294370
295371 }
0 commit comments