Skip to content

Commit a51a39e

Browse files
committed
✨ Add unit tests for JobService, SolverService, and CatalogService with fixtures
1 parent 799b391 commit a51a39e

File tree

4 files changed

+44
-39
lines changed

4 files changed

+44
-39
lines changed

services/api-server/tests/unit/test_service_solvers.py renamed to services/api-server/tests/unit/service/conftest.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from pytest_mock import MockerFixture, MockType
1010
from simcore_service_api_server._service_jobs import JobService
1111
from simcore_service_api_server._service_solvers import SolverService
12-
from simcore_service_api_server.models.schemas.solvers import Solver
1312
from simcore_service_api_server.services_rpc.catalog import CatalogService
1413
from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient
1514

@@ -23,7 +22,7 @@ def job_service(
2322
user_id: UserID,
2423
) -> JobService:
2524
return JobService(
26-
web_rest_api=mocker.MagicMock(),
25+
web_rest_api=mocker.MagicMock(), # TODO: might want to return the real one
2726
web_rpc_api=WbApiRpcClient(_client=mocker.MagicMock()),
2827
user_id=user_id,
2928
product_name=product_name,
@@ -44,34 +43,3 @@ def solver_service(
4443
job_service: JobService,
4544
) -> SolverService:
4645
return SolverService(catalog_service=catalog_service, job_service=job_service)
47-
48-
49-
async def test_get_solver(
50-
solver_service: SolverService,
51-
mocked_catalog_rpc_api: dict[str, MockType],
52-
product_name: ProductName,
53-
user_id: UserID,
54-
):
55-
solver = await solver_service.get_solver(
56-
user_id=user_id,
57-
solver_key="simcore/services/comp/solver-1",
58-
solver_version="1.0.0",
59-
product_name=product_name,
60-
)
61-
62-
assert isinstance(solver, Solver)
63-
mocked_catalog_rpc_api["get_service"].assert_called_once()
64-
65-
66-
async def test_list_jobs(
67-
solver_service: SolverService,
68-
mocked_webserver_rpc_api: dict[str, MockType],
69-
):
70-
# Test default parameters
71-
jobs, page_meta = await solver_service.list_jobs()
72-
assert isinstance(jobs, list)
73-
mocked_webserver_rpc_api["list_projects_marked_as_jobs"].assert_called_once()
74-
assert page_meta.total >= 0
75-
assert page_meta.limit == 49
76-
assert page_meta.offset == 0
77-
assert page_meta.count > 0
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+
from models_library.products import ProductName
7+
from models_library.users import UserID
8+
from pytest_mock import MockType
9+
from simcore_service_api_server._service_solvers import SolverService
10+
from simcore_service_api_server.models.schemas.solvers import Solver
11+
12+
13+
async def test_get_solver(
14+
solver_service: SolverService,
15+
mocked_catalog_rpc_api: dict[str, MockType],
16+
product_name: ProductName,
17+
user_id: UserID,
18+
):
19+
solver = await solver_service.get_solver(
20+
user_id=user_id,
21+
solver_key="simcore/services/comp/solver-1",
22+
solver_version="1.0.0",
23+
product_name=product_name,
24+
)
25+
26+
assert isinstance(solver, Solver)
27+
mocked_catalog_rpc_api["get_service"].assert_called_once()
28+
29+
30+
async def test_list_jobs(
31+
solver_service: SolverService,
32+
mocked_webserver_rpc_api: dict[str, MockType],
33+
):
34+
# Test default parameters
35+
jobs, page_meta = await solver_service.list_jobs()
36+
assert isinstance(jobs, list)
37+
mocked_webserver_rpc_api["list_projects_marked_as_jobs"].assert_called_once()
38+
assert page_meta.total >= 0
39+
assert page_meta.limit == 49
40+
assert page_meta.offset == 0
41+
assert page_meta.count > 0

services/api-server/tests/unit/test_services_catalog.py renamed to services/api-server/tests/unit/service/test_services_catalog.py

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

7-
from fastapi import FastAPI
87
from models_library.api_schemas_catalog.services import LatestServiceGet, ServiceGetV2
98
from models_library.products import ProductName
109
from models_library.services_history import ServiceRelease
1110
from models_library.users import UserID
1211
from pydantic import HttpUrl
13-
from pytest_mock import MockerFixture, MockType
12+
from pytest_mock import MockType
1413
from simcore_service_api_server.models.schemas.solvers import Solver
1514
from simcore_service_api_server.services_rpc.catalog import CatalogService
1615

@@ -30,14 +29,11 @@ def to_solver(
3029

3130

3231
async def test_catalog_service_read_solvers(
33-
app: FastAPI,
3432
product_name: ProductName,
3533
user_id: UserID,
36-
mocker: MockerFixture,
3734
mocked_catalog_rpc_api: dict[str, MockType],
35+
catalog_service: CatalogService,
3836
):
39-
catalog_service = CatalogService(client=mocker.MagicMock())
40-
4137
# Step 1: List latest releases in a page
4238
latest_releases, meta = await catalog_service.list_latest_releases(
4339
product_name=product_name, user_id=user_id

0 commit comments

Comments
 (0)