@@ -55,8 +55,9 @@ def formatted_dict_has_only_keys_prescribed_in_the_spec():
5555 [1 , 2 , 3 ],
5656 ["a" , "b" , "c" ],
5757 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" }
6061
6162 def uses_the_stack_of_an_original_error ():
6263 try :
@@ -143,6 +144,29 @@ def converts_source_and_positions_to_locations():
143144 assert e .positions == [6 ]
144145 assert e .locations == [(2 , 5 )]
145146
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+
146170 def serializes_to_include_message ():
147171 e = GraphQLError ("msg" )
148172 assert str (e ) == "msg"
@@ -160,6 +184,28 @@ def serializes_to_include_message_and_locations():
160184 "message" : "msg" ,
161185 }
162186
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+
163209 def repr_includes_extensions ():
164210 e = GraphQLError ("msg" , extensions = {"foo" : "bar" })
165211 assert repr (e ) == "GraphQLError('msg', extensions={'foo': 'bar'})"
0 commit comments