@@ -55,8 +55,9 @@ def formatted_dict_has_only_keys_prescribed_in_the_spec():
55
55
[1 , 2 , 3 ],
56
56
["a" , "b" , "c" ],
57
57
Exception ("test" ),
58
- {"foo" : "bar" })
59
- assert set (e .formatted ) == {'message' , 'path' , 'locations' , 'extensions' }
58
+ {"foo" : "bar" },
59
+ )
60
+ assert set (e .formatted ) == {"message" , "path" , "locations" , "extensions" }
60
61
61
62
def uses_the_stack_of_an_original_error ():
62
63
try :
@@ -143,6 +144,29 @@ def converts_source_and_positions_to_locations():
143
144
assert e .positions == [6 ]
144
145
assert e .locations == [(2 , 5 )]
145
146
147
+ def defaults_to_original_error_extension_only_if_arg_is_not_passed ():
148
+ original_extensions = {"original" : "extensions" }
149
+ original_error = GraphQLError ("original" , extensions = original_extensions )
150
+ inherited_error = GraphQLError ("InheritedError" , original_error = original_error )
151
+ assert inherited_error .message == "InheritedError"
152
+ assert inherited_error .original_error is original_error
153
+ assert inherited_error .extensions is original_extensions
154
+
155
+ own_extensions = {"own" : "extensions" }
156
+ own_error = GraphQLError (
157
+ "OwnError" , original_error = original_error , extensions = own_extensions
158
+ )
159
+ assert own_error .message == "OwnError"
160
+ assert own_error .original_error is original_error
161
+ assert own_error .extensions is own_extensions
162
+
163
+ own_empty_error = GraphQLError (
164
+ "OwnEmptyError" , original_error = original_error , extensions = {}
165
+ )
166
+ assert own_empty_error .message == "OwnEmptyError"
167
+ assert own_empty_error .original_error is original_error
168
+ assert own_empty_error .extensions == {}
169
+
146
170
def serializes_to_include_message ():
147
171
e = GraphQLError ("msg" )
148
172
assert str (e ) == "msg"
@@ -160,6 +184,28 @@ def serializes_to_include_message_and_locations():
160
184
"message" : "msg" ,
161
185
}
162
186
187
+ def serializes_to_include_all_standard_fields ():
188
+ e_short = GraphQLError ("msg" )
189
+ assert str (e_short ) == "msg"
190
+ assert repr (e_short ) == "GraphQLError('msg')"
191
+
192
+ path : List [Union [str , int ]] = ["path" , 2 , "field" ]
193
+ extensions = {"foo" : "bar " }
194
+ e_full = GraphQLError ("msg" , field_node , None , None , path , None , extensions )
195
+ assert str (e_full ) == (
196
+ "msg\n \n GraphQL request:2:3\n " "1 | {\n 2 | field\n | ^\n 3 | }"
197
+ )
198
+ assert repr (e_full ) == (
199
+ "GraphQLError('msg', locations=[SourceLocation(line=2, column=3)],"
200
+ " path=['path', 2, 'field'], extensions={'foo': 'bar '})"
201
+ )
202
+ assert e_full .formatted == {
203
+ "message" : "msg" ,
204
+ "locations" : [{"line" : 2 , "column" : 3 }],
205
+ "path" : ["path" , 2 , "field" ],
206
+ "extensions" : {"foo" : "bar " },
207
+ }
208
+
163
209
def repr_includes_extensions ():
164
210
e = GraphQLError ("msg" , extensions = {"foo" : "bar" })
165
211
assert repr (e ) == "GraphQLError('msg', extensions={'foo': 'bar'})"
0 commit comments