Skip to content

Commit 0ec418d

Browse files
committed
integration tests
1 parent 21c2e53 commit 0ec418d

3 files changed

Lines changed: 20 additions & 23 deletions

File tree

src/apify_client/_resource_clients/dataset.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,8 @@ def list_items(
196196
A page of the list of dataset items according to the specified filters.
197197
"""
198198

199-
def _fetch_page(
200-
*,
201-
offset: int | None = None,
202-
limit: int | None = None,
203-
) -> PageOfDatasetItems:
199+
def _fetch_page(**kwargs: Any) -> PageOfDatasetItems:
204200
request_params = self._build_params(
205-
offset=offset,
206-
limit=limit,
207201
desc=desc,
208202
clean=clean,
209203
fields=fields,
@@ -214,6 +208,8 @@ def _fetch_page(
214208
flatten=flatten,
215209
view=view,
216210
signature=signature,
211+
timeout=timeout,
212+
**kwargs,
217213
)
218214

219215
response = self._http_client.call(
@@ -226,13 +222,15 @@ def _fetch_page(
226222
# When using signature, API returns items as list directly
227223
items = response_to_list(response)
228224

225+
# When using signature, API returns items as list directly
226+
229227
return PageOfDatasetItems(
230228
items=items,
231229
total=int(response.headers['x-apify-pagination-total']),
232230
offset=int(response.headers['x-apify-pagination-offset']),
233231
# x-apify-pagination-count returns count of processed items, not count of returned items
234232
# This makes difference when items were filtered using hidden/empty
235-
count=int(response.headers['x-apify-pagination-count']),
233+
count=max(int(response.headers['x-apify-pagination-count']), len(items)),
236234
# API returns 999999999999 when no limit is used
237235
limit=int(response.headers['x-apify-pagination-limit']),
238236
desc=response.headers['x-apify-pagination-desc'].lower() == 'true',
@@ -919,7 +917,7 @@ async def _fetch_page(
919917
offset=int(response.headers['x-apify-pagination-offset']),
920918
# x-apify-pagination-count returns count of processed items, not count of returned items
921919
# This makes difference when items were filtered using hidden/empty
922-
count=int(response.headers['x-apify-pagination-count']),
920+
count=max(int(response.headers['x-apify-pagination-count']), len(items)),
923921
# API returns 999999999999 when no limit is used
924922
limit=int(response.headers['x-apify-pagination-limit']),
925923
desc=response.headers['x-apify-pagination-desc'].lower() == 'true',

tests/integration/test_dataset.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import TYPE_CHECKING, cast
66

77
from apify_client._models_generated import DatasetListItem
8-
from apify_client._pagination_classes import PageOfItems
8+
from apify_client._pagination_classes import PageOfDatasetItems, PageOfItems
99

1010
if TYPE_CHECKING:
1111
from collections.abc import AsyncIterator, Iterator
@@ -265,8 +265,8 @@ async def test_dataset_push_and_list_items(client: ApifyClient | ApifyClientAsyn
265265
await maybe_sleep(1, is_async=is_async)
266266

267267
# List items
268-
result = await maybe_await(dataset_client.list_items())
269-
items_page = cast('DatasetItemsPage', result)
268+
items_page = await maybe_await(dataset_client.list_items())
269+
assert isinstance(items_page, PageOfDatasetItems)
270270
assert items_page is not None
271271
assert len(items_page.items) == 3
272272
assert items_page.count == 3
@@ -298,22 +298,21 @@ async def test_dataset_list_items_with_pagination(client: ApifyClient | ApifyCli
298298
await maybe_sleep(1, is_async=is_async)
299299

300300
# List with limit
301-
result = await maybe_await(dataset_client.list_items(limit=5))
302-
items_page = cast('DatasetItemsPage', result)
301+
items_page = await maybe_await(dataset_client.list_items(limit=5))
302+
assert isinstance(items_page, PageOfDatasetItems)
303303
assert len(items_page.items) == 5
304304
assert items_page.count == 5
305305
# Note: items_page.total may be 0 immediately after push due to eventual consistency
306306
assert items_page.limit == 5
307307

308308
# List with offset
309-
result = await maybe_await(dataset_client.list_items(offset=5, limit=5))
310-
items_page_offset = cast('DatasetItemsPage', result)
309+
items_page_offset = await maybe_await(dataset_client.list_items(offset=5, limit=5))
310+
assert isinstance(items_page_offset, PageOfDatasetItems)
311311
assert len(items_page_offset.items) == 5
312312
assert items_page_offset.offset == 5
313313
# Note: items_page.total may be 0 immediately after push due to eventual consistency
314-
315314
# Verify different items
316-
assert items_page.items[0]['index'] != items_page_offset.items[0]['index']
315+
assert items_page_offset.items[0]['index'] != items_page.items[0]['index']
317316
finally:
318317
await maybe_await(dataset_client.delete())
319318

@@ -338,8 +337,8 @@ async def test_dataset_list_items_with_fields(client: ApifyClient | ApifyClientA
338337
await maybe_sleep(1, is_async=is_async)
339338

340339
# List with fields filter
341-
result = await maybe_await(dataset_client.list_items(fields=['id', 'name']))
342-
items_page = cast('DatasetItemsPage', result)
340+
items_page = await maybe_await(dataset_client.list_items(fields=['id', 'name']))
341+
assert isinstance(items_page, PageOfDatasetItems)
343342
assert len(items_page.items) == 2
344343

345344
# Verify only specified fields are returned

tests/integration/test_key_value_store.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import TYPE_CHECKING, cast
66

77
from apify_client._models_generated import KeyValueStore, KeyValueStoreKey
8-
from apify_client._pagination_classes import PageOfKeys
8+
from apify_client._pagination_classes import PageOfItems, PageOfKeys
99

1010
if TYPE_CHECKING:
1111
from collections.abc import AsyncIterator, Iterator
@@ -26,7 +26,7 @@ async def test_key_value_store_collection_list(client: ApifyClient | ApifyClient
2626
"""Test listing key-value stores."""
2727
kvs_page = await maybe_await(client.key_value_stores().list(limit=10))
2828

29-
assert isinstance(kvs_page, PageOfKeys)
29+
assert isinstance(kvs_page, PageOfItems)
3030
assert isinstance(kvs_page.items, list)
3131
if kvs_page.items:
3232
assert isinstance(kvs_page.items[0], KeyValueStore)
@@ -36,7 +36,7 @@ async def test_key_value_store_collection_list_pagination(client: ApifyClient |
3636
"""Test listing key-value stores with pagination."""
3737
kvs_page = await maybe_await(client.key_value_stores().list(limit=5, offset=0))
3838

39-
assert isinstance(kvs_page, PageOfKeys)
39+
assert isinstance(kvs_page, PageOfItems)
4040
assert isinstance(kvs_page.items, list)
4141
if kvs_page.items:
4242
assert isinstance(kvs_page.items[0], KeyValueStore)

0 commit comments

Comments
 (0)