diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py index 623c02631c0..6543969343c 100644 --- a/api/controllers/console/datasets/datasets.py +++ b/api/controllers/console/datasets/datasets.py @@ -136,8 +136,8 @@ class IndexingEstimatePayload(BaseModel): class ConsoleDatasetListQuery(BaseModel): - page: int = Field(default=1, description="Page number") - limit: int = Field(default=20, description="Number of items per page") + page: int = Field(default=1, ge=1, description="Page number") + limit: int = Field(default=20, ge=1, description="Number of items per page") keyword: str | None = Field(default=None, description="Search keyword") include_all: bool = Field(default=False, description="Include all datasets") ids: list[str] = Field(default_factory=list, description="Filter by dataset IDs") diff --git a/api/tests/unit_tests/controllers/console/datasets/test_dataset_list_query.py b/api/tests/unit_tests/controllers/console/datasets/test_dataset_list_query.py new file mode 100644 index 00000000000..0830fec9f72 --- /dev/null +++ b/api/tests/unit_tests/controllers/console/datasets/test_dataset_list_query.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +import pytest +from pydantic import ValidationError + +from controllers.console.datasets.datasets import ConsoleDatasetListQuery + + +def test_dataset_list_query_defaults() -> None: + query = ConsoleDatasetListQuery() + assert query.page == 1 + assert query.limit == 20 + + +def test_dataset_list_query_accepts_valid_pagination() -> None: + query = ConsoleDatasetListQuery(page=3, limit=50) + assert query.page == 3 + assert query.limit == 50 + + +def test_dataset_list_query_rejects_non_positive_page() -> None: + with pytest.raises(ValidationError): + ConsoleDatasetListQuery(page=0) + with pytest.raises(ValidationError): + ConsoleDatasetListQuery(page=-1) + + +def test_dataset_list_query_rejects_non_positive_limit() -> None: + with pytest.raises(ValidationError): + ConsoleDatasetListQuery(limit=0) + with pytest.raises(ValidationError): + ConsoleDatasetListQuery(limit=-5)