4
4
5
5
from graphql .error import GraphQLError , format_error
6
6
from graphql .language import Node , Source
7
+ from graphql .pyutils import Undefined
7
8
8
9
9
10
def 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 ():
16
12
source = Source (
17
13
"""
18
14
query {
@@ -31,14 +27,49 @@ def format_graphql_error():
31
27
extensions = extensions ,
32
28
)
33
29
formatted = format_error (error )
30
+ assert formatted == error .formatted
34
31
assert formatted == {
35
32
"message" : "test message" ,
36
33
"locations" : [{"line" : 2 , "column" : 14 }, {"line" : 3 , "column" : 20 }],
37
34
"path" : path ,
38
35
"extensions" : extensions ,
39
36
}
40
37
41
- def add_default_message ():
38
+ def uses_default_message ():
42
39
# 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