Skip to content

Commit 6aed87d

Browse files
committed
Extract more format_error tests into separate file
Replicates graphql/graphql-js@642eeaf We did most of this already, so without coverage improvement.
1 parent c9e0227 commit 6aed87d

File tree

2 files changed

+41
-28
lines changed

2 files changed

+41
-28
lines changed

tests/error/test_format_error.py

+40-9
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@
44

55
from graphql.error import GraphQLError, format_error
66
from graphql.language import Node, Source
7+
from graphql.pyutils import Undefined
78

89

910
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():
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."

tests/error/test_graphql_error.py

+1-19
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import cast, List, Union
22

3-
from graphql.error import GraphQLError, format_error, print_error
3+
from graphql.error import GraphQLError, print_error
44
from graphql.language import (
55
parse,
66
OperationDefinitionNode,
@@ -114,24 +114,6 @@ def serializes_to_include_path():
114114
assert e.path is path
115115
assert repr(e) == "GraphQLError('msg', path=['path', 3, 'to', 'field'])"
116116

117-
def default_error_formatter_includes_path():
118-
path: List[Union[int, str]] = ["path", 3, "to", "field"]
119-
e = GraphQLError("msg", path=path)
120-
formatted = format_error(e)
121-
assert formatted == e.formatted
122-
assert formatted == {"message": "msg", "locations": None, "path": path}
123-
124-
def default_error_formatter_includes_extension_fields():
125-
e = GraphQLError("msg", extensions={"foo": "bar"})
126-
formatted = format_error(e)
127-
assert formatted == e.formatted
128-
assert formatted == {
129-
"message": "msg",
130-
"locations": None,
131-
"path": None,
132-
"extensions": {"foo": "bar"},
133-
}
134-
135117
def is_hashable():
136118
hash(GraphQLError("msg"))
137119

0 commit comments

Comments
 (0)