Skip to content

Commit 2aa165f

Browse files
committed
Add async test, fix Mypy issues
1 parent 87911c4 commit 2aa165f

File tree

1 file changed

+53
-33
lines changed

1 file changed

+53
-33
lines changed

tests/unit/test_client_timeouts.py

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -83,44 +83,47 @@ def check_timeout(request: Request) -> Response:
8383
HTTPClient(timeout_secs=client_timeout).call(method='GET', url='https://example.com', timeout_secs=call_timeout)
8484

8585

86+
_timeout_params = [
87+
(DatasetClient, 'get', dataset._SMALL_TIMEOUT, {}),
88+
(DatasetClient, 'update', dataset._SMALL_TIMEOUT, {}),
89+
(DatasetClient, 'delete', dataset._SMALL_TIMEOUT, {}),
90+
(DatasetClient, 'list_items', 360, {}),
91+
(DatasetClient, 'download_items', 360, {}),
92+
(DatasetClient, 'get_items_as_bytes', 360, {}),
93+
(DatasetClient, 'push_items', dataset._MEDIUM_TIMEOUT, {'items': {}}),
94+
(DatasetClient, 'get_statistics', dataset._SMALL_TIMEOUT, {}),
95+
(KeyValueStoreClient, 'get', kvs._SMALL_TIMEOUT, {}),
96+
(KeyValueStoreClient, 'update', 360, {}),
97+
(KeyValueStoreClient, 'delete', kvs._SMALL_TIMEOUT, {}),
98+
(KeyValueStoreClient, 'list_keys', kvs._MEDIUM_TIMEOUT, {}),
99+
(KeyValueStoreClient, 'get_record', 360, {'key': 'some_key'}),
100+
(KeyValueStoreClient, 'get_record_as_bytes', 360, {'key': 'some_key'}),
101+
(KeyValueStoreClient, 'set_record', 360, {'key': 'some_key', 'value': 'some_value'}),
102+
(KeyValueStoreClient, 'delete_record', kvs._SMALL_TIMEOUT, {'key': 'some_key'}),
103+
(RequestQueueClient, 'get', request_queue._SMALL_TIMEOUT, {}),
104+
(RequestQueueClient, 'update', kvs._SMALL_TIMEOUT, {}),
105+
(RequestQueueClient, 'delete', kvs._SMALL_TIMEOUT, {}),
106+
(RequestQueueClient, 'list_head', kvs._SMALL_TIMEOUT, {}),
107+
(RequestQueueClient, 'list_and_lock_head', kvs._MEDIUM_TIMEOUT, {'lock_secs': 1}),
108+
(RequestQueueClient, 'add_request', kvs._SMALL_TIMEOUT, {'request': {}}),
109+
(RequestQueueClient, 'get_request', kvs._SMALL_TIMEOUT, {'request_id': 'some_id'}),
110+
(RequestQueueClient, 'update_request', kvs._MEDIUM_TIMEOUT, {'request': {'id': 123}}),
111+
(RequestQueueClient, 'delete_request', kvs._SMALL_TIMEOUT, {'request_id': 123}),
112+
(RequestQueueClient, 'prolong_request_lock', kvs._MEDIUM_TIMEOUT, {'request_id': 123, 'lock_secs': 1}),
113+
(RequestQueueClient, 'delete_request_lock', kvs._SMALL_TIMEOUT, {'request_id': 123}),
114+
(RequestQueueClient, 'batch_add_requests', kvs._MEDIUM_TIMEOUT, {'requests': [{}]}),
115+
(RequestQueueClient, 'batch_delete_requests', kvs._SMALL_TIMEOUT, {'requests': [{}]}),
116+
(RequestQueueClient, 'list_requests', kvs._MEDIUM_TIMEOUT, {}),
117+
]
118+
119+
86120
@pytest.mark.parametrize(
87121
('client_type', 'method', 'expected_timeout', 'kwargs'),
88-
[
89-
(DatasetClient, 'get', dataset._SMALL_TIMEOUT, {}),
90-
(DatasetClient, 'update', dataset._SMALL_TIMEOUT, {}),
91-
(DatasetClient, 'delete', dataset._SMALL_TIMEOUT, {}),
92-
(DatasetClient, 'list_items', 360, {}),
93-
(DatasetClient, 'download_items', 360, {}),
94-
(DatasetClient, 'get_items_as_bytes', 360, {}),
95-
(DatasetClient, 'push_items', dataset._MEDIUM_TIMEOUT, {'items': {}}),
96-
(DatasetClient, 'get_statistics', dataset._SMALL_TIMEOUT, {}),
97-
(KeyValueStoreClient, 'get', kvs._SMALL_TIMEOUT, {}),
98-
(KeyValueStoreClient, 'update', 360, {}),
99-
(KeyValueStoreClient, 'delete', kvs._SMALL_TIMEOUT, {}),
100-
(KeyValueStoreClient, 'list_keys', kvs._MEDIUM_TIMEOUT, {}),
101-
(KeyValueStoreClient, 'get_record', 360, {'key': 'some_key'}),
102-
(KeyValueStoreClient, 'get_record_as_bytes', 360, {'key': 'some_key'}),
103-
(KeyValueStoreClient, 'set_record', 360, {'key': 'some_key', 'value': 'some_value'}),
104-
(KeyValueStoreClient, 'delete_record', kvs._SMALL_TIMEOUT, {'key': 'some_key'}),
105-
(RequestQueueClient, 'get', request_queue._SMALL_TIMEOUT, {}),
106-
(RequestQueueClient, 'update', kvs._SMALL_TIMEOUT, {}),
107-
(RequestQueueClient, 'delete', kvs._SMALL_TIMEOUT, {}),
108-
(RequestQueueClient, 'list_head', kvs._SMALL_TIMEOUT, {}),
109-
(RequestQueueClient, 'list_and_lock_head', kvs._MEDIUM_TIMEOUT, {'lock_secs': 1}),
110-
(RequestQueueClient, 'add_request', kvs._SMALL_TIMEOUT, {'request': {}}),
111-
(RequestQueueClient, 'get_request', kvs._SMALL_TIMEOUT, {'request_id': 'some_id'}),
112-
(RequestQueueClient, 'update_request', kvs._MEDIUM_TIMEOUT, {'request': {'id': 123}}),
113-
(RequestQueueClient, 'delete_request', kvs._SMALL_TIMEOUT, {'request_id': 123}),
114-
(RequestQueueClient, 'prolong_request_lock', kvs._MEDIUM_TIMEOUT, {'request_id': 123, 'lock_secs': 1}),
115-
(RequestQueueClient, 'delete_request_lock', kvs._SMALL_TIMEOUT, {'request_id': 123}),
116-
(RequestQueueClient, 'batch_add_requests', kvs._MEDIUM_TIMEOUT, {'requests': [{}]}),
117-
(RequestQueueClient, 'batch_delete_requests', kvs._SMALL_TIMEOUT, {'requests': [{}]}),
118-
(RequestQueueClient, 'list_requests', kvs._MEDIUM_TIMEOUT, {}),
119-
],
122+
_timeout_params,
120123
)
121124
@respx.mock
122125
def test_specific_timeouts_for_specific_endpoints_sync(
123-
client_type: type[DatasetClient, KeyValueStoreClient, RequestQueueClient],
126+
client_type: type[DatasetClient | KeyValueStoreClient | RequestQueueClient],
124127
method: str,
125128
kwargs: dict,
126129
expected_timeout: int,
@@ -129,3 +132,20 @@ def test_specific_timeouts_for_specific_endpoints_sync(
129132
client = client_type(base_url='https://example.com', root_client=ApifyClient(), http_client=HTTPClient())
130133
with pytest.raises(EndOfTestError):
131134
getattr(client, method)(**kwargs)
135+
136+
137+
@pytest.mark.parametrize(
138+
('client_type', 'method', 'expected_timeout', 'kwargs'),
139+
_timeout_params,
140+
)
141+
@respx.mock
142+
async def test_specific_timeouts_for_specific_endpoints_async(
143+
client_type: type[DatasetClient | KeyValueStoreClient | RequestQueueClient],
144+
method: str,
145+
kwargs: dict,
146+
expected_timeout: int,
147+
) -> None:
148+
respx.route(host='example.com').mock(side_effect=partial(assert_timeout, expected_timeout))
149+
client = client_type(base_url='https://example.com', root_client=ApifyClient(), http_client=HTTPClient())
150+
with pytest.raises(EndOfTestError):
151+
await getattr(client, method)(**kwargs)

0 commit comments

Comments
 (0)