44
55from graphql .error import GraphQLError , format_error
66from graphql .language import Node , Source
7+ from graphql .pyutils import Undefined
78
89
910def describe_format_error ():
10- def throw_if_not_an_error ():
11- with raises (TypeError ):
12- # noinspection PyTypeChecker
13- format_error (None ) # type: ignore
14-
15- def format_graphql_error ():
11+ def formats_graphql_error ():
1612 source = Source (
1713 """
1814 query {
@@ -31,14 +27,49 @@ def format_graphql_error():
3127 extensions = extensions ,
3228 )
3329 formatted = format_error (error )
30+ assert formatted == error .formatted
3431 assert formatted == {
3532 "message" : "test message" ,
3633 "locations" : [{"line" : 2 , "column" : 14 }, {"line" : 3 , "column" : 20 }],
3734 "path" : path ,
3835 "extensions" : extensions ,
3936 }
4037
41- def add_default_message ():
38+ def uses_default_message ():
4239 # noinspection PyTypeChecker
43- error = format_error (GraphQLError (None )) # type: ignore
44- assert error ["message" ] == "An unknown error occurred."
40+ formatted = format_error (GraphQLError (None )) # type: ignore
41+
42+ assert formatted == {
43+ "message" : "An unknown error occurred." ,
44+ "locations" : None ,
45+ "path" : None ,
46+ }
47+
48+ def includes_path ():
49+ path : List [Union [int , str ]] = ["path" , 3 , "to" , "field" ]
50+ error = GraphQLError ("msg" , path = path )
51+ formatted = format_error (error )
52+ assert formatted == error .formatted
53+ assert formatted == {"message" : "msg" , "locations" : None , "path" : path }
54+
55+ def includes_extension_fields ():
56+ error = GraphQLError ("msg" , extensions = {"foo" : "bar" })
57+ formatted = format_error (error )
58+ assert formatted == error .formatted
59+ assert formatted == {
60+ "message" : "msg" ,
61+ "locations" : None ,
62+ "path" : None ,
63+ "extensions" : {"foo" : "bar" },
64+ }
65+
66+ def rejects_none_and_undefined_errors ():
67+ with raises (TypeError ) as exc_info :
68+ # noinspection PyTypeChecker
69+ format_error (None ) # type: ignore
70+ assert str (exc_info .value ) == "Received no error object."
71+
72+ with raises (TypeError ) as exc_info :
73+ # noinspection PyTypeChecker
74+ format_error (Undefined ) # type: ignore
75+ assert str (exc_info .value ) == "Received no error object."
0 commit comments