File tree Expand file tree Collapse file tree 4 files changed +26
-3
lines changed
packages/models-library/src/models_library
src/simcore_service_webserver
tests/unit/with_dbs/04/workspaces Expand file tree Collapse file tree 4 files changed +26
-3
lines changed Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ def create_ordering_query_model_classes(
5151 msg_direction_options = "|" .join (sorted (OrderDirection ))
5252
5353 class _OrderBy (OrderBy ):
54- @validator ("field" , allow_reuse = True )
54+ @validator ("field" , allow_reuse = True , always = True )
5555 @classmethod
5656 def _check_if_ordering_field (cls , v ):
5757 if v not in ordering_fields :
Original file line number Diff line number Diff line change @@ -91,7 +91,7 @@ class ServicesResourceUsagesReportQueryParams(
9191 example = '{"started_at": {"from": "yyyy-mm-dd", "until": "yyyy-mm-dd"}}' ,
9292 )
9393
94- @validator ("order_by" )
94+ @validator ("order_by" , always = True )
9595 @classmethod
9696 def _post_rename_order_by_field (cls , v ):
9797 if v .field == "credit_cost" :
Original file line number Diff line number Diff line change @@ -89,9 +89,11 @@ class WorkspacesListQueryParams(
8989 PageQueryParameters ,
9090 WorkspacesListOrderQueryParams , # type: ignore[misc, valid-type]
9191):
92- @validator ("order_by" , check_fields = False )
92+ @validator ("order_by" , check_fields = False , always = True )
9393 @classmethod
9494 def _post_rename_order_by_field (cls , v ):
95+ # NOTE: PC->MD this is very error-prone (e.g. w/ defaults).
96+ # Rather create a map to a db interface
9597 if v .field == "modified_at" :
9698 v .field = "modified"
9799 return v
Original file line number Diff line number Diff line change 88import pytest
99from aiohttp .test_utils import TestClient
1010from models_library .api_schemas_webserver .workspaces import WorkspaceGet
11+ from models_library .rest_ordering import OrderDirection
1112from pytest_simcore .helpers .assert_checks import assert_status
1213from pytest_simcore .helpers .webserver_login import UserInfoDict
1314from pytest_simcore .helpers .webserver_parametrizations import (
1718from servicelib .aiohttp import status
1819from simcore_service_webserver .db .models import UserRole
1920from simcore_service_webserver .projects .models import ProjectDict
21+ from simcore_service_webserver .workspaces ._workspaces_handlers import (
22+ WorkspacesListQueryParams ,
23+ )
24+
25+
26+ def test_workspaces_order_query_model_post_validator ():
27+
28+ # on default
29+ query_params = WorkspacesListQueryParams .parse_obj ({})
30+ assert query_params .order_by
31+ assert query_params .order_by .field == "modified"
32+ assert query_params .order_by .direction == OrderDirection .DESC
33+
34+ # on partial default
35+ query_params = WorkspacesListQueryParams .parse_obj (
36+ {"order_by" : {"field" : "modified_at" }}
37+ )
38+ assert query_params .order_by
39+ assert query_params .order_by .field == "modified"
40+ assert query_params .order_by .direction == OrderDirection .ASC
2041
2142
2243@pytest .mark .parametrize (* standard_role_response (), ids = str )
You can’t perform that action at this time.
0 commit comments