@@ -7,6 +7,18 @@ class DirectiveInput < GraphQL::Schema::InputObject
77 argument :val , Integer
88 end
99
10+ class OperationFinalizer
11+ include GraphQL ::Execution ::Finalizer
12+
13+ def finalize_graphql_result ( query , result_data , result_key )
14+ query . context [ :operation_finalizer ] = {
15+ path : path ,
16+ result_data : result_data . dup ,
17+ result_key : result_key ,
18+ }
19+ end
20+ end
21+
1022 class InitInt < GraphQL ::Schema ::Directive
1123 locations ( GraphQL ::Schema ::Directive ::QUERY )
1224 argument ( :val , Integer , "Initial integer value." , required : false )
@@ -19,7 +31,7 @@ def self.resolve(obj, args, ctx)
1931
2032 def self . resolve_operation ( ast_node , query , objects , args , context )
2133 context [ :int ] = args [ :val ] || args [ :input ] [ :val ] || 0
22- nil
34+ OperationFinalizer . new
2335 end
2436 end
2537
@@ -38,6 +50,7 @@ def int
3850
3951 directive ( InitInt )
4052 query ( Query )
53+ use GraphQL ::Execution ::Next
4154 end
4255
4356 it "returns an error if directive is not on the query level" do
@@ -67,8 +80,12 @@ def int
6780 }
6881 '
6982
70- res = QueryDirectiveSchema . execute ( str )
83+ res = QueryDirectiveSchema . execute_next ( str )
7184 assert_equal ( { "int1" => 11 , "int2" => 12 } , res [ "data" ] )
85+ assert_equal (
86+ { path : [ ] , result_data : { "int1" => 11 , "int2" => 12 } , result_key : nil } ,
87+ res . context [ :operation_finalizer ] ,
88+ )
7289 end
7390
7491 it "works with input object arguments" do
0 commit comments