Skip to content

Commit e51fada

Browse files
committed
GraphQLError: test how extensions is inherited from original_error
Replicates graphql/graphql-js@958ac6c
1 parent 2207cce commit e51fada

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

tests/error/test_graphql_error.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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\nGraphQL request:2:3\n" "1 | {\n2 | field\n | ^\n3 | }"
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

Comments
 (0)