diff --git a/src/crawlee/storage_clients/_redis/_dataset_client.py b/src/crawlee/storage_clients/_redis/_dataset_client.py index f2383b47de..1a33ce609e 100644 --- a/src/crawlee/storage_clients/_redis/_dataset_client.py +++ b/src/crawlee/storage_clients/_redis/_dataset_client.py @@ -185,6 +185,8 @@ async def get_data( match (desc, offset, limit): case (True, 0, int()): json_path += f'[-{limit}:]' + case (True, 0, None): + json_path += '[:]' case (True, int(), None): json_path += f'[:-{offset}]' case (True, int(), int()): diff --git a/tests/unit/storages/test_dataset.py b/tests/unit/storages/test_dataset.py index a95efff7f6..3b0a8e1d6e 100644 --- a/tests/unit/storages/test_dataset.py +++ b/tests/unit/storages/test_dataset.py @@ -235,6 +235,17 @@ async def test_get_data_descending_order(dataset: Dataset) -> None: assert result.items[-1]['id'] == 1 +async def test_get_data_descending_with_unlimited_limit(dataset: Dataset) -> None: + """Test that get_data with desc=True and limit=None returns all items in reverse order.""" + items = [{'id': i} for i in range(1, 4)] # 3 items + await dataset.push_data(items) + + result = await dataset.get_data(desc=True, limit=None) + + assert result.count == 3 + assert result.items == [{'id': 3}, {'id': 2}, {'id': 1}] + + async def test_get_data_skip_empty(dataset: Dataset) -> None: """Test getting data with skip_empty option filters out empty items.""" # Add some items including an empty one