@@ -9,6 +9,7 @@ import graphql.language.EnumValue
99import graphql.language.IntValue
1010import graphql.language.ListType
1111import graphql.language.NonNullType
12+ import graphql.language.NullValue
1213import graphql.language.ObjectField
1314import graphql.language.ObjectValue
1415import graphql.language.StringValue
@@ -449,4 +450,40 @@ class ValuesResolverTest extends Specification {
449450 then :
450451 thrown(GraphQLException )
451452 }
453+
454+ // Note: use NullValue defined in Field when it exists,
455+ // and ignore defaultValue defined in type system
456+ def " getArgumentValues: use null value when argumentValue defined in Field is null" () {
457+ given : " schema defining input object"
458+ def inputObjectType = newInputObject()
459+ .name(" inputObject" )
460+ .build()
461+
462+ def fieldArgument = new GraphQLArgument (" arg" , " " , inputObjectType, " hello" )
463+ def argument = new Argument (" arg" , NullValue . newNullValue(). build())
464+
465+ when :
466+ def variables = [:]
467+ def values = resolver. getArgumentValues([fieldArgument], [argument], variables)
468+
469+ then :
470+ values[' arg' ] == null
471+ }
472+
473+ def " getArgumentValues: use null when reference value in variables is null" () {
474+ given : " schema defining input object"
475+ def inputObjectType = newInputObject()
476+ .name(" inputObject" )
477+ .build()
478+
479+ def fieldArgument = new GraphQLArgument (" arg" , " " , inputObjectType, " hello" )
480+ def argument = new Argument (" arg" , new VariableReference (" var" ))
481+
482+ when :
483+ def variables = [" var" : null ]
484+ def values = resolver. getArgumentValues([fieldArgument], [argument], variables)
485+
486+ then :
487+ values[' arg' ] == null
488+ }
452489}
0 commit comments