|
8 | 8 | from graphql.type import (GraphQLArgument, GraphQLBoolean, GraphQLField,
|
9 | 9 | GraphQLInt, GraphQLList, GraphQLObjectType,
|
10 | 10 | GraphQLSchema, GraphQLString)
|
| 11 | +from promise import Promise |
11 | 12 |
|
12 | 13 |
|
13 | 14 | def test_executes_arbitary_code():
|
@@ -607,3 +608,40 @@ def resolve(self, next, *args, **kwargs):
|
607 | 608 | middlewares = MiddlewareManager(MyMiddleware())
|
608 | 609 | result = execute(GraphQLSchema(Type), doc_ast, Data(), middleware=middlewares)
|
609 | 610 | assert result.data == {'ok': 'ko', 'not_ok': 'ko_ton'}
|
| 611 | + |
| 612 | + |
| 613 | +def test_middleware_skip_promise_wrap(): |
| 614 | + doc = '''{ |
| 615 | + ok |
| 616 | + not_ok |
| 617 | + }''' |
| 618 | + |
| 619 | + class Data(object): |
| 620 | + |
| 621 | + def ok(self): |
| 622 | + return 'ok' |
| 623 | + |
| 624 | + def not_ok(self): |
| 625 | + return 'not_ok' |
| 626 | + |
| 627 | + doc_ast = parse(doc) |
| 628 | + |
| 629 | + Type = GraphQLObjectType('Type', { |
| 630 | + 'ok': GraphQLField(GraphQLString), |
| 631 | + 'not_ok': GraphQLField(GraphQLString), |
| 632 | + }) |
| 633 | + |
| 634 | + class MyPromiseMiddleware(object): |
| 635 | + def resolve(self, next, *args, **kwargs): |
| 636 | + return Promise.resolve(next(*args, **kwargs)) |
| 637 | + |
| 638 | + class MyEmptyMiddleware(object): |
| 639 | + def resolve(self, next, *args, **kwargs): |
| 640 | + return next(*args, **kwargs) |
| 641 | + |
| 642 | + middlewares_with_promise = MiddlewareManager(MyPromiseMiddleware(), wrap_in_promise=False) |
| 643 | + middlewares_without_promise = MiddlewareManager(MyEmptyMiddleware(), wrap_in_promise=False) |
| 644 | + |
| 645 | + result1 = execute(GraphQLSchema(Type), doc_ast, Data(), middleware=middlewares_with_promise) |
| 646 | + result2 = execute(GraphQLSchema(Type), doc_ast, Data(), middleware=middlewares_without_promise) |
| 647 | + assert result1.data == result2.data and result1.data == {'ok': 'ok', 'not_ok': 'not_ok'} |
0 commit comments