Skip to content

Commit 3ba14d9

Browse files
committed
Extends fake
1 parent 6cf35b7 commit 3ba14d9

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from models_library.projects import ProjectID
55
from models_library.rpc_pagination import PageRpc
66
from pydantic import BaseModel, ConfigDict, Field
7+
from pydantic.types import JsonDict
78

89

910
class ProjectRpcGet(BaseModel):
@@ -27,9 +28,26 @@ class ProjectRpcGet(BaseModel):
2728
creation_date: datetime
2829
last_change_date: datetime
2930

31+
@staticmethod
32+
def _update_json_schema_extra(schema: JsonDict) -> None:
33+
schema.udpate(
34+
{
35+
"examples": [
36+
{
37+
"uuid": "12345678-1234-5678-1234-123456789012",
38+
"name": "My project",
39+
"description": "My project description",
40+
"creation_date": "2023-01-01T00:00:00Z",
41+
"last_change_date": "2023-01-01T00:00:00Z",
42+
},
43+
]
44+
}
45+
)
46+
3047
model_config = ConfigDict(
3148
extra="forbid",
3249
populate_by_name=True,
50+
json_schema_extra=_update_json_schema_extra,
3351
)
3452

3553

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 PageRpcProjectRpcGet
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+
) -> PageRpcProjectRpcGet:
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 = PageRpcProjectRpcGet.model_json_schema()["examples"]
68+
69+
return PageRpcProjectRpcGet.create(
70+
items[offset, : offset + limit],
71+
total=len(items),
72+
limit=limit,
73+
offset=offset,
74+
)

services/api-server/tests/unit/conftest.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,11 @@ def mocked_webserver_rpc_api(
369369
"mark_project_as_job",
370370
side_effects.mark_project_as_job,
371371
),
372+
"list_projects_marked_as_jobs": mocker.patch.object(
373+
projects_rpc,
374+
"list_projects_marked_as_jobs",
375+
side_effects.list_projects_marked_as_jobs,
376+
),
372377
}
373378

374379

0 commit comments

Comments
 (0)