diff --git a/src/atlas/models/api.py b/src/atlas/models/api.py index 3671b72..bbb86ae 100644 --- a/src/atlas/models/api.py +++ b/src/atlas/models/api.py @@ -39,9 +39,10 @@ class ResultMetrics(BaseModel): class Pagination(BaseModel): - total_count: int + page: int page_size: int total_pages: int + total_count: int class ResultsResponse(BaseModel): diff --git a/src/atlas/resources/results/results.py b/src/atlas/resources/results/results.py index 45c894d..1c712ea 100644 --- a/src/atlas/resources/results/results.py +++ b/src/atlas/resources/results/results.py @@ -78,9 +78,10 @@ def get_by_id( resp_with_pagination = { **resp, "pagination": { - "total_count": total_count, + "page": effective_page, "page_size": effective_page_size, "total_pages": total_pages, + "total_count": total_count, }, } diff --git a/tests/test_models.py b/tests/test_models.py index 0692b03..52bccdc 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -223,44 +223,49 @@ class TestPagination: def valid_pagination_data(self): """Valid pagination data for testing.""" return { - "total_count": 250, + "page": 1, "page_size": 100, "total_pages": 3, + "total_count": 250, } def test_pagination_creation(self, valid_pagination_data): """Pagination model creates with valid data.""" pagination = Pagination(**valid_pagination_data) - assert pagination.total_count == 250 + assert pagination.page == 1 assert pagination.page_size == 100 assert pagination.total_pages == 3 + assert pagination.total_count == 250 def test_pagination_field_types(self, valid_pagination_data): """Pagination model enforces correct field types.""" pagination = Pagination(**valid_pagination_data) - assert isinstance(pagination.total_count, int) + assert isinstance(pagination.page, int) assert isinstance(pagination.page_size, int) assert isinstance(pagination.total_pages, int) + assert isinstance(pagination.total_count, int) def test_pagination_zero_values(self): """Pagination model handles zero values correctly.""" pagination = Pagination( - total_count=0, + page=1, page_size=100, total_pages=0, + total_count=0, ) - assert pagination.total_count == 0 + assert pagination.page == 1 assert pagination.page_size == 100 assert pagination.total_pages == 0 + assert pagination.total_count == 0 def test_pagination_validation_errors(self, valid_pagination_data): """Pagination model validates field types.""" - # Test invalid total_count + # Test invalid page invalid_data = valid_pagination_data.copy() - invalid_data["total_count"] = "not-an-int" + invalid_data["page"] = "not-an-int" with pytest.raises(ValidationError): Pagination(**invalid_data) @@ -276,6 +281,12 @@ def test_pagination_validation_errors(self, valid_pagination_data): with pytest.raises(ValidationError): Pagination(**invalid_data) + # Test invalid total_count + invalid_data = valid_pagination_data.copy() + invalid_data["total_count"] = "not-an-int" + with pytest.raises(ValidationError): + Pagination(**invalid_data) + class TestResults: """Test Results collection model with pagination.""" @@ -304,9 +315,10 @@ def valid_metrics_data(self): def valid_pagination_data(self): """Valid pagination data for testing.""" return { - "total_count": 150, + "page": 1, "page_size": 100, "total_pages": 2, + "total_count": 150, } def test_results_with_pagination(self, valid_result_data, valid_metrics_data, valid_pagination_data): @@ -323,9 +335,10 @@ def test_results_with_pagination(self, valid_result_data, valid_metrics_data, va assert all(isinstance(result, Result) for result in results.results) assert isinstance(results.metrics, ResultMetrics) assert isinstance(results.pagination, Pagination) - assert results.pagination.total_count == 150 + assert results.pagination.page == 1 assert results.pagination.page_size == 100 assert results.pagination.total_pages == 2 + assert results.pagination.total_count == 150 def test_results_field_types(self, valid_result_data, valid_metrics_data, valid_pagination_data): """Results model enforces correct field types."""