Skip to content

Commit 055b475

Browse files
committed
fixes tests
1 parent b2a5b91 commit 055b475

File tree

7 files changed

+71
-23
lines changed

7 files changed

+71
-23
lines changed

packages/models-library/src/models_library/projects_nodes.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -272,19 +272,19 @@ def _convert_empty_str_to_none(cls, v):
272272
return None
273273
return v
274274

275-
@classmethod
276-
def _convert_old_enum_name(cls, v) -> RunningState:
277-
if v == "FAILURE":
278-
return RunningState.FAILED
279-
return RunningState(v)
280-
281275
@field_validator("state", mode="before")
282276
@classmethod
283277
def _convert_from_enum(cls, v):
284278
if isinstance(v, str):
279+
280+
def _convert_old_enum_name(v) -> RunningState:
281+
if v == "FAILURE":
282+
return RunningState.FAILED
283+
return RunningState(v)
284+
285285
# the old version of state was a enum of RunningState
286-
running_state_value = cls._convert_old_enum_name(v)
287-
return NodeState(currentStatus=running_state_value)
286+
running_state_value = _convert_old_enum_name(v)
287+
return NodeState.model_validate({"currentStatus": running_state_value})
288288
return v
289289

290290
@staticmethod

packages/models-library/src/models_library/rpc/webserver/projects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ class ProjectJobRpcGet(BaseModel):
2929
workbench: NodesDict
3030

3131
# timestamps
32-
creation_date: datetime
33-
last_change_date: datetime
32+
creation_at: datetime
33+
modified_at: datetime
3434

3535
# Specific to jobs
3636
job_parent_resource_name: str

packages/pytest-simcore/src/pytest_simcore/helpers/catalog_rpc_server.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@
2525
)
2626
from models_library.services_types import ServiceKey, ServiceVersion
2727
from models_library.users import UserID
28-
from pydantic import NonNegativeInt, TypeAdapter
28+
from pydantic import NonNegativeInt, TypeAdapter, validate_call
29+
from pytest_mock import MockType
2930
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
3031

3132

3233
class CatalogRpcSideEffects:
3334
# pylint: disable=no-self-use
35+
@validate_call(config={"arbitrary_types_allowed": True})
3436
async def list_services_paginated(
3537
self,
36-
rpc_client: RabbitMQRPCClient,
38+
rpc_client: RabbitMQRPCClient | MockType,
3739
*,
3840
product_name: ProductName,
3941
user_id: UserID,
@@ -58,9 +60,10 @@ async def list_services_paginated(
5860
offset=offset,
5961
)
6062

63+
@validate_call(config={"arbitrary_types_allowed": True})
6164
async def get_service(
6265
self,
63-
rpc_client: RabbitMQRPCClient,
66+
rpc_client: RabbitMQRPCClient | MockType,
6467
*,
6568
product_name: ProductName,
6669
user_id: UserID,
@@ -87,9 +90,10 @@ async def get_service(
8790

8891
return got
8992

93+
@validate_call(config={"arbitrary_types_allowed": True})
9094
async def update_service(
9195
self,
92-
rpc_client: RabbitMQRPCClient,
96+
rpc_client: RabbitMQRPCClient | MockType,
9397
*,
9498
product_name: ProductName,
9599
user_id: UserID,
@@ -108,9 +112,10 @@ async def update_service(
108112
got.key = service_key
109113
return got.model_copy(update=update.model_dump(exclude_unset=True))
110114

115+
@validate_call(config={"arbitrary_types_allowed": True})
111116
async def list_my_service_history_paginated(
112117
self,
113-
rpc_client: RabbitMQRPCClient,
118+
rpc_client: RabbitMQRPCClient | MockType,
114119
*,
115120
product_name: ProductName,
116121
user_id: UserID,
@@ -138,9 +143,10 @@ async def list_my_service_history_paginated(
138143
offset=offset,
139144
)
140145

146+
@validate_call(config={"arbitrary_types_allowed": True})
141147
async def get_service_ports(
142148
self,
143-
rpc_client: RabbitMQRPCClient,
149+
rpc_client: RabbitMQRPCClient | MockType,
144150
*,
145151
product_name: ProductName,
146152
user_id: UserID,

packages/pytest-simcore/src/pytest_simcore/helpers/webserver_rpc_server.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@
77

88
from models_library.products import ProductName
99
from models_library.projects import ProjectID
10+
from models_library.rest_pagination import PageOffsetInt
11+
from models_library.rpc.webserver.projects import PageRpcProjectJobRpcGet
12+
from models_library.rpc_pagination import (
13+
DEFAULT_NUMBER_OF_ITEMS_PER_PAGE,
14+
PageLimitInt,
15+
)
1016
from models_library.users import UserID
1117
from pydantic import TypeAdapter, validate_call
18+
from pytest_mock import MockType
19+
from servicelib.rabbitmq import RabbitMQRPCClient
1220
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
1321

1422

@@ -18,7 +26,7 @@ class WebserverRpcSideEffects:
1826
@validate_call(config={"arbitrary_types_allowed": True})
1927
async def mark_project_as_job(
2028
self,
21-
rpc_client: RabbitMQRPCClient,
29+
rpc_client: RabbitMQRPCClient | MockType,
2230
*,
2331
product_name: ProductName,
2432
user_id: UserID,
@@ -35,3 +43,32 @@ async def mark_project_as_job(
3543
assert user_id
3644

3745
TypeAdapter(ProjectID).validate_python(project_uuid)
46+
47+
@validate_call(config={"arbitrary_types_allowed": True})
48+
async def list_projects_marked_as_jobs(
49+
self,
50+
rpc_client: RabbitMQRPCClient | MockType,
51+
*,
52+
product_name: ProductName,
53+
user_id: UserID,
54+
# pagination
55+
offset: PageOffsetInt = 0,
56+
limit: PageLimitInt = DEFAULT_NUMBER_OF_ITEMS_PER_PAGE,
57+
# filters
58+
job_parent_resource_name_filter: str | None = None,
59+
) -> PageRpcProjectJobRpcGet:
60+
assert rpc_client
61+
assert product_name
62+
assert user_id
63+
64+
if job_parent_resource_name_filter:
65+
assert not job_parent_resource_name_filter.startswith("/")
66+
67+
items = PageRpcProjectJobRpcGet.model_json_schema()["examples"]
68+
69+
return PageRpcProjectJobRpcGet.create(
70+
items[offset, : offset + limit],
71+
total=len(items),
72+
limit=limit,
73+
offset=offset,
74+
)

services/web/server/src/simcore_service_webserver/projects/_controller/projects_rpc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ async def list_projects_marked_as_jobs(
8383
uuid=project.uuid,
8484
name=project.name,
8585
description=project.description,
86-
workbench={}, # FIXME: this should be extracted
87-
creation_date=project.creation_date,
88-
last_change_date=project.last_change_date,
86+
workbench=project.workbench,
87+
creation_at=project.creation_date,
88+
modified_at=project.last_change_date,
8989
job_parent_resource_name=project.job_parent_resource_name,
9090
)
9191
for project in projects

services/web/server/src/simcore_service_webserver/projects/_projects_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,7 @@ async def update_project_node_state(
10251025
project_id=project_id,
10261026
node_id=node_id,
10271027
partial_node=PartialNode.model_construct(
1028-
state=NodeState(currentStatus=RunningState(new_state))
1028+
state=NodeState(currentStatus=RunningState(new_state)) # type: ignore[call-arg]
10291029
),
10301030
)
10311031

services/web/server/tests/unit/with_dbs/02/test_projects_rpc.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,13 @@ async def test_rpc_client_list_my_projects_marked_as_jobs(
120120
assert page.meta.total == 1
121121
assert page.meta.offset == 0
122122
assert isinstance(page.data[0], ProjectJobRpcGet)
123-
assert page.data[0].uuid == project_uuid
124-
assert len(page.data[0].workbench) == len(user_project["workbench"])
123+
124+
project_job = page.data[0]
125+
assert project_job.uuid == project_uuid
126+
assert project_job.name == user_project["name"]
127+
assert project_job.description == user_project["description"]
128+
129+
assert set(project_job.workbench.keys()) == set(user_project["workbench"].keys())
125130

126131

127132
@pytest.fixture

0 commit comments

Comments
 (0)