Skip to content

Commit 38659a3

Browse files
committed
Add test for mixing sync/async resolvers
Replicates graphql/graphql-js@5009d9f
1 parent c698ab5 commit 38659a3

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

tests/execution/test_executor.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,56 @@ async def asyncReturnErrorWithExtensions(self, _info):
514514
],
515515
)
516516

517+
def handles_sync_errors_combined_with_async_ones():
518+
is_async_resolver_finished = False
519+
520+
async def async_resolver(_obj, _info):
521+
nonlocal is_async_resolver_finished
522+
sleep = asyncio.sleep
523+
sleep(0)
524+
sleep(0)
525+
sleep(0)
526+
is_async_resolver_finished = True
527+
528+
schema = GraphQLSchema(
529+
GraphQLObjectType(
530+
"Query",
531+
{
532+
"syncNullError": GraphQLField(
533+
GraphQLNonNull(GraphQLString), resolve=lambda _obj, _info: None
534+
),
535+
"asyncNullError": GraphQLField(
536+
GraphQLNonNull(GraphQLString), resolve=async_resolver
537+
),
538+
},
539+
)
540+
)
541+
542+
document = parse(
543+
"""
544+
{
545+
asyncNullError
546+
syncNullError
547+
}
548+
"""
549+
)
550+
551+
result = execute(schema, document)
552+
553+
assert is_async_resolver_finished is False
554+
555+
assert result == (
556+
None,
557+
[
558+
{
559+
"message": "Cannot return null"
560+
" for non-nullable field Query.syncNullError.",
561+
"locations": [(4, 15)],
562+
"path": ["syncNullError"],
563+
}
564+
],
565+
)
566+
517567
def full_response_path_is_included_for_non_nullable_fields():
518568
def resolve_ok(*_args):
519569
return {}

0 commit comments

Comments
 (0)