10
10
pytestmark = pytest .mark .asyncio
11
11
12
12
13
- class AsyncMock (mock .MagicMock ):
14
- async def __call__ (self , * args , ** kwargs ):
15
- return super ().__call__ (* args , ** kwargs )
13
+ try :
14
+ from unittest .mock import AsyncMock # Python 3.8+
15
+ except ImportError :
16
+ from mock import AsyncMock
16
17
17
18
18
19
class TstServer (base_async .BaseAsyncSubscriptionServer ):
@@ -26,75 +27,78 @@ def server():
26
27
27
28
28
29
async def test_terminate (server : TstServer ):
29
- context = AsyncMock ()
30
+ context = AsyncMock (spec = base_async . BaseAsyncConnectionContext )
30
31
await server .on_connection_terminate (connection_context = context , op_id = 1 )
31
32
context .close .assert_called_with (1011 )
32
33
33
34
34
35
async def test_send_error (server : TstServer ):
35
- context = AsyncMock ()
36
- context .has_operation = mock .Mock ()
36
+ context = AsyncMock (spec = base_async .BaseAsyncConnectionContext )
37
37
await server .send_error (connection_context = context , op_id = 1 , error = "test error" )
38
38
context .send .assert_called_with (
39
39
{"id" : 1 , "type" : "error" , "payload" : {"message" : "test error" }}
40
40
)
41
41
42
42
43
- async def test_message (server ):
43
+ async def test_message (server : TstServer ):
44
44
server .process_message = AsyncMock ()
45
- context = AsyncMock ()
45
+ context = AsyncMock (spec = base_async . BaseAsyncConnectionContext )
46
46
msg = {"id" : 1 , "type" : base .GQL_CONNECTION_INIT , "payload" : "" }
47
47
await server .on_message (context , msg )
48
48
server .process_message .assert_called_with (context , msg )
49
49
50
50
51
- async def test_message_str (server ):
51
+ async def test_message_str (server : TstServer ):
52
52
server .process_message = AsyncMock ()
53
- context = AsyncMock ()
53
+ context = AsyncMock (spec = base_async . BaseAsyncConnectionContext )
54
54
msg = {"id" : 1 , "type" : base .GQL_CONNECTION_INIT , "payload" : "" }
55
55
await server .on_message (context , json .dumps (msg ))
56
56
server .process_message .assert_called_with (context , msg )
57
57
58
58
59
- async def test_message_invalid (server ):
59
+ async def test_message_invalid (server : TstServer ):
60
60
server .send_error = AsyncMock ()
61
- await server .on_message (connection_context = None , message = "'not-json" )
61
+ context = AsyncMock (spec = base_async .BaseAsyncConnectionContext )
62
+ await server .on_message (context , message = "'not-json" )
62
63
assert server .send_error .called
63
64
64
65
65
- async def test_resolver (server ):
66
+ async def test_resolver (server : TstServer ):
66
67
server .send_message = AsyncMock ()
68
+ context = AsyncMock (spec = base_async .BaseAsyncConnectionContext )
67
69
result = mock .Mock ()
68
70
result .data = {"test" : [1 , 2 ]}
69
71
result .errors = None
70
72
await server .send_execution_result (
71
- connection_context = None , op_id = 1 , execution_result = result
73
+ context , op_id = 1 , execution_result = result
72
74
)
73
75
assert server .send_message .called
74
76
75
77
76
78
@pytest .mark .asyncio
77
- async def test_resolver_with_promise (server ):
79
+ async def test_resolver_with_promise (server : TstServer ):
78
80
server .send_message = AsyncMock ()
81
+ context = AsyncMock (spec = base_async .BaseAsyncConnectionContext )
79
82
result = mock .Mock ()
80
83
result .data = {"test" : [1 , promise .Promise (lambda resolve , reject : resolve (2 ))]}
81
84
result .errors = None
82
85
await server .send_execution_result (
83
- connection_context = None , op_id = 1 , execution_result = result
86
+ context , op_id = 1 , execution_result = result
84
87
)
85
88
assert server .send_message .called
86
89
assert result .data == {'test' : [1 , 2 ]}
87
90
88
91
89
- async def test_resolver_with_nested_promise (server ):
92
+ async def test_resolver_with_nested_promise (server : TstServer ):
90
93
server .send_message = AsyncMock ()
94
+ context = AsyncMock (spec = base_async .BaseAsyncConnectionContext )
91
95
result = mock .Mock ()
92
96
inner = promise .Promise (lambda resolve , reject : resolve (2 ))
93
97
outer = promise .Promise (lambda resolve , reject : resolve ({'in' : inner }))
94
98
result .data = {"test" : [1 , outer ]}
95
99
result .errors = None
96
100
await server .send_execution_result (
97
- connection_context = None , op_id = 1 , execution_result = result
101
+ context , op_id = 1 , execution_result = result
98
102
)
99
103
assert server .send_message .called
100
104
assert result .data == {'test' : [1 , {'in' : 2 }]}
0 commit comments