@@ -1678,7 +1678,12 @@ def call(parent_type, field, object, args, context)
16781678 end
16791679
16801680 def coerce_input ( type , value , ctx )
1681- ( ctx [ :nils ] ||= [ ] ) . push ( value [ 2 ] )
1681+ nils = ctx [ :nils ] ||= [ ]
1682+ if value . is_a? ( Array )
1683+ nils << value [ 2 ]
1684+ else
1685+ nils << value [ "abc" ]
1686+ end
16821687 ::JSON . generate ( value )
16831688 end
16841689
@@ -1707,6 +1712,23 @@ def coerce_result(type, value, ctx)
17071712 assert_equal ( [ 3 , "abc" , nil , 7 ] , res_2 [ "data" ] [ "echoJsonValue" ] )
17081713 assert_equal [ nil , nil ] , res_2 . context [ :nils ]
17091714
1715+ res_3 = app . execute_query ( <<~EOS , arg : { "abc" => nil , "def" => 7 } )
1716+ query WithArg($arg: JsonValue) {
1717+ echoJsonValue(arg: $arg)
1718+ }
1719+ EOS
1720+
1721+ assert_equal ( { "abc" => nil , "def" => 7 } , res_3 [ "data" ] [ "echoJsonValue" ] )
1722+ assert_equal [ nil , nil ] , res_3 . context [ :nils ]
1723+
1724+ res_4 = app . execute_query ( <<~EOS )
1725+ query {
1726+ echoJsonValue(arg: { abc: null, def: 7, ghi: { jkl: null } })
1727+ }
1728+ EOS
1729+
1730+ assert_equal ( { "abc" => nil , "def" => 7 , "ghi" => { "jkl" => nil } } , res_4 [ "data" ] [ "echoJsonValue" ] )
1731+ assert_equal [ nil , nil ] , res_4 . context [ :nils ]
17101732 end
17111733 end
17121734end
0 commit comments