Skip to content

Commit 341bea0

Browse files
committed
drafting tests
1 parent 5da758e commit 341bea0

File tree

5 files changed

+62
-14
lines changed

5 files changed

+62
-14
lines changed

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,

services/api-server/src/simcore_service_api_server/_service_solvers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
from models_library.services_history import ServiceRelease
1515
from models_library.users import UserID
1616
from packaging.version import Version
17-
from simcore_service_api_server.models.schemas.jobs import Job
1817

18+
from .api.dependencies.webserver_rpc import get_wb_api_rpc_client
19+
from .models.schemas.jobs import Job
1920
from .models.schemas.solvers import Solver, SolverKeyId
2021
from .services_rpc.catalog import CatalogService
2122
from .services_rpc.wb_api_server import WbApiRpcClient
@@ -30,7 +31,7 @@ class SolverService:
3031
def __init__(
3132
self,
3233
catalog_service: Annotated[CatalogService, Depends()],
33-
webserver_client: Annotated[WbApiRpcClient, Depends()],
34+
webserver_client: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)],
3435
):
3536
self._catalog_service = catalog_service
3637
self._webserver_client = webserver_client

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from models_library.api_schemas_webserver.projects import ProjectGet
3232
from models_library.app_diagnostics import AppStatusCheck
3333
from models_library.generics import Envelope
34+
from models_library.products import ProductName
3435
from models_library.projects import ProjectID
3536
from models_library.projects_nodes_io import BaseFileLink, SimcoreS3FileID
3637
from models_library.users import UserID
@@ -54,6 +55,11 @@
5455
from simcore_service_api_server.services_http.solver_job_outputs import ResultsTypes
5556

5657

58+
@pytest.fixture
59+
def product_name() -> ProductName:
60+
return "osparc"
61+
62+
5763
@pytest.fixture
5864
def mocked_rpc_catalog_service_api(
5965
app: FastAPI, mocker: MockerFixture
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# pylint: disable=protected-access
2+
# pylint: disable=redefined-outer-name
3+
# pylint: disable=unused-argument
4+
# pylint: disable=unused-variable
5+
6+
import pytest
7+
from models_library.products import ProductName
8+
from models_library.users import UserID
9+
from pytest_mock import MockerFixture, MockType
10+
from simcore_service_api_server._service_solvers import SolverService
11+
from simcore_service_api_server.models.schemas.solvers import Solver
12+
from simcore_service_api_server.services_rpc.catalog import CatalogService
13+
from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient
14+
15+
16+
@pytest.fixture
17+
def solver_service(
18+
mocker: MockerFixture,
19+
mocked_rpc_catalog_service_api: dict[str, MockType],
20+
) -> SolverService:
21+
return SolverService(
22+
catalog_service=CatalogService(client=mocker.MagicMock()),
23+
webserver_client=WbApiRpcClient(_client=mocker.MagicMock()),
24+
)
25+
26+
27+
async def test_get_solver(
28+
solver_service: SolverService,
29+
mocked_rpc_catalog_service_api: dict[str, MockType],
30+
product_name: ProductName,
31+
user_id: UserID,
32+
):
33+
solver = await solver_service.get_solver(
34+
user_id=user_id,
35+
name="simcore/services/comp/solver-1",
36+
version="1.0.0",
37+
product_name=product_name,
38+
)
39+
40+
assert isinstance(solver, Solver)
41+
mocked_rpc_catalog_service_api["get_service"].assert_called_once()

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
# pylint: disable=unused-argument
55
# pylint: disable=unused-variable
66

7-
import pytest
87
from fastapi import FastAPI
98
from models_library.api_schemas_catalog.services import LatestServiceGet, ServiceGetV2
109
from models_library.products import ProductName
@@ -16,11 +15,6 @@
1615
from simcore_service_api_server.services_rpc.catalog import CatalogService
1716

1817

19-
@pytest.fixture
20-
def product_name() -> ProductName:
21-
return "osparc"
22-
23-
2418
def to_solver(
2519
service: LatestServiceGet | ServiceGetV2, href_self: HttpUrl | None = None
2620
) -> Solver:

0 commit comments

Comments
 (0)