Skip to content

Commit 9a7d6e3

Browse files
committed
✨ Refactor mocked_app_dependencies fixture and replace mocked_webserver_rpc_api for improved clarity and consistency in testing dependencies
1 parent 265efa6 commit 9a7d6e3

File tree

2 files changed

+52
-49
lines changed

2 files changed

+52
-49
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ async def get_latest_release(
6464
solver_key: SolverKeyId,
6565
product_name: str,
6666
) -> Solver:
67-
# TODO: Mads, this is not necessary. The first item is the latest!
6867
service_releases: list[ServiceRelease] = []
6968
for page_params in iter_pagination_params(limit=DEFAULT_PAGINATION_LIMIT):
7069
releases, page_meta = await self._catalog_service.list_release_history(

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

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,37 @@ def mocked_s3_server_url() -> Iterator[HttpUrl]:
227227
## MOCKED res/web APIs from simcore services ------------------------------------------
228228

229229

230+
@pytest.fixture
231+
def mocked_app_dependencies(app: FastAPI, mocker: MockerFixture) -> Iterator[None]:
232+
"""
233+
Mocks some dependency overrides for the FastAPI app.
234+
"""
235+
assert app.state.settings.API_SERVER_RABBITMQ is None
236+
237+
from simcore_service_api_server.api.dependencies.rabbitmq import (
238+
get_rabbitmq_rpc_client,
239+
)
240+
from simcore_service_api_server.api.dependencies.webserver_rpc import (
241+
get_wb_api_rpc_client,
242+
)
243+
244+
def _get_rabbitmq_rpc_client_override():
245+
return mocker.MagicMock()
246+
247+
async def _get_wb_api_rpc_client_override():
248+
return mocker.AsyncMock()
249+
250+
app.dependency_overrides[get_rabbitmq_rpc_client] = (
251+
_get_rabbitmq_rpc_client_override
252+
)
253+
app.dependency_overrides[get_wb_api_rpc_client] = _get_wb_api_rpc_client_override
254+
255+
yield
256+
257+
app.dependency_overrides.pop(get_wb_api_rpc_client, None)
258+
app.dependency_overrides.pop(get_rabbitmq_rpc_client, None)
259+
260+
230261
@pytest.fixture
231262
def directorv2_service_openapi_specs(
232263
osparc_simcore_services_dir: Path,
@@ -337,33 +368,6 @@ def mocked_webserver_rest_api_base(
337368
yield respx_mock
338369

339370

340-
@pytest.fixture
341-
def mocked_webserver_rpc_api(mocker: MockerFixture) -> dict[str, MockType]:
342-
"""
343-
Mocks the webserver's simcore service RPC API for testing purposes.
344-
"""
345-
from servicelib.rabbitmq.rpc_interfaces.webserver import (
346-
projects as projects_rpc, # keep import here
347-
)
348-
349-
side_effects = WebserverRpcSideEffects()
350-
351-
return {
352-
"mark_project_as_job": mocker.patch.object(
353-
projects_rpc,
354-
"mark_project_as_job",
355-
autospec=True,
356-
side_effect=side_effects.mark_project_as_job,
357-
),
358-
"list_projects_marked_as_jobs": mocker.patch.object(
359-
projects_rpc,
360-
"list_projects_marked_as_jobs",
361-
autospec=True,
362-
side_effect=side_effects.list_projects_marked_as_jobs,
363-
),
364-
}
365-
366-
367371
@pytest.fixture
368372
def mocked_storage_rest_api_base(
369373
app: FastAPI,
@@ -458,32 +462,32 @@ def mocked_catalog_rest_api_base(
458462

459463

460464
@pytest.fixture
461-
def mocked_app_dependencies(app: FastAPI, mocker: MockerFixture) -> Iterator[None]:
465+
def mocked_webserver_rpc_api(
466+
mocked_app_dependencies: None, mocker: MockerFixture
467+
) -> dict[str, MockType]:
462468
"""
463-
Mocks some dependency overrides for the FastAPI app.
469+
Mocks the webserver's simcore service RPC API for testing purposes.
464470
"""
465-
from simcore_service_api_server.api.dependencies.rabbitmq import (
466-
get_rabbitmq_rpc_client,
467-
)
468-
from simcore_service_api_server.api.dependencies.webserver_rpc import (
469-
get_wb_api_rpc_client,
470-
)
471-
472-
def _get_rabbitmq_rpc_client_override(app: FastAPI):
473-
return mocker.MagicMock()
474-
475-
async def _get_wb_api_rpc_client_override(app: FastAPI):
476-
return mocker.MagicMock()
477-
478-
app.dependency_overrides[get_rabbitmq_rpc_client] = (
479-
_get_rabbitmq_rpc_client_override
471+
from servicelib.rabbitmq.rpc_interfaces.webserver import (
472+
projects as projects_rpc, # keep import here
480473
)
481-
app.dependency_overrides[get_wb_api_rpc_client] = _get_wb_api_rpc_client_override
482474

483-
yield
475+
side_effects = WebserverRpcSideEffects()
484476

485-
app.dependency_overrides.pop(get_wb_api_rpc_client, None)
486-
app.dependency_overrides.pop(get_rabbitmq_rpc_client, None)
477+
return {
478+
"mark_project_as_job": mocker.patch.object(
479+
projects_rpc,
480+
"mark_project_as_job",
481+
autospec=True,
482+
side_effect=side_effects.mark_project_as_job,
483+
),
484+
"list_projects_marked_as_jobs": mocker.patch.object(
485+
projects_rpc,
486+
"list_projects_marked_as_jobs",
487+
autospec=True,
488+
side_effect=side_effects.list_projects_marked_as_jobs,
489+
),
490+
}
487491

488492

489493
@pytest.fixture

0 commit comments

Comments
 (0)