@@ -13,12 +13,14 @@ def initialize(value:)
13
13
end
14
14
end
15
15
16
+ class ErrorASubclass < ErrorA ; end
17
+
16
18
use GraphQL ::Execution ::Interpreter
17
19
use GraphQL ::Analysis ::AST
18
20
use GraphQL ::Execution ::Errors
19
21
20
22
rescue_from ( ErrorA ) do |err , obj , args , ctx , field |
21
- ctx [ :errors ] << "#{ err . message } (#{ obj . class . name } .#{ field . graphql_name } , #{ args . inspect } )"
23
+ ctx [ :errors ] << "#{ err . message } (#{ field . owner . name } .#{ field . graphql_name } , #{ obj . inspect } , #{ args . inspect } )"
22
24
nil
23
25
end
24
26
@@ -55,6 +57,10 @@ def f4
55
57
raise ErrorC . new ( value : 20 )
56
58
end
57
59
60
+ field :f5 , Int , null : true
61
+ def f5
62
+ raise ErrorASubclass , "raised subclass"
63
+ end
58
64
end
59
65
60
66
query ( Query )
@@ -65,14 +71,14 @@ def f4
65
71
ctx = { errors : [ ] }
66
72
res = ErrorsTestSchema . execute "{ f1(a1: 1) }" , context : ctx , root_value : :abc
67
73
assert_equal ( { "data" => { "f1" => nil } } , res )
68
- assert_equal [ "f1 broke (ErrorsTestSchema::Query.f1, {:a1=>1})" ] , ctx [ :errors ]
74
+ assert_equal [ "f1 broke (ErrorsTestSchema::Query.f1, :abc, {:a1=>1})" ] , ctx [ :errors ]
69
75
end
70
76
71
77
it "rescues errors from lazy code" do
72
78
ctx = { errors : [ ] }
73
79
res = ErrorsTestSchema . execute ( "{ f2 }" , context : ctx )
74
80
assert_equal ( { "data" => { "f2" => nil } } , res )
75
- assert_equal [ "f2 broke (ErrorsTestSchema::Query.f2, {})" ] , ctx [ :errors ]
81
+ assert_equal [ "f2 broke (ErrorsTestSchema::Query.f2, nil, {})" ] , ctx [ :errors ]
76
82
end
77
83
78
84
it "can raise new errors" do
@@ -89,5 +95,12 @@ def f4
89
95
res = ErrorsTestSchema . execute ( "{ f4 }" )
90
96
assert_equal ( { "data" => { "f4" => 20 } } , res )
91
97
end
98
+
99
+ it "rescues subclasses" do
100
+ context = { errors : [ ] }
101
+ res = ErrorsTestSchema . execute ( "{ f5 }" , context : context )
102
+ assert_equal ( { "data" => { "f5" => nil } } , res )
103
+ assert_equal [ "raised subclass (ErrorsTestSchema::Query.f5, nil, {})" ] , context [ :errors ]
104
+ end
92
105
end
93
106
end
0 commit comments