Skip to content

Commit 747001a

Browse files
committed
✨ Refactor mocked_app_dependencies fixture and replace mocked_webserver_rpc_api for improved clarity and consistency in testing dependencies
1 parent 2989ba0 commit 747001a

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
@@ -242,6 +242,37 @@ def mocked_s3_server_url() -> Iterator[HttpUrl]:
242242
## MOCKED res/web APIs from simcore services ------------------------------------------
243243

244244

245+
@pytest.fixture
246+
def mocked_app_dependencies(app: FastAPI, mocker: MockerFixture) -> Iterator[None]:
247+
"""
248+
Mocks some dependency overrides for the FastAPI app.
249+
"""
250+
assert app.state.settings.API_SERVER_RABBITMQ is None
251+
252+
from simcore_service_api_server.api.dependencies.rabbitmq import (
253+
get_rabbitmq_rpc_client,
254+
)
255+
from simcore_service_api_server.api.dependencies.webserver_rpc import (
256+
get_wb_api_rpc_client,
257+
)
258+
259+
def _get_rabbitmq_rpc_client_override():
260+
return mocker.MagicMock()
261+
262+
async def _get_wb_api_rpc_client_override():
263+
return mocker.AsyncMock()
264+
265+
app.dependency_overrides[get_rabbitmq_rpc_client] = (
266+
_get_rabbitmq_rpc_client_override
267+
)
268+
app.dependency_overrides[get_wb_api_rpc_client] = _get_wb_api_rpc_client_override
269+
270+
yield
271+
272+
app.dependency_overrides.pop(get_wb_api_rpc_client, None)
273+
app.dependency_overrides.pop(get_rabbitmq_rpc_client, None)
274+
275+
245276
@pytest.fixture
246277
def directorv2_service_openapi_specs(
247278
osparc_simcore_services_dir: Path,
@@ -352,33 +383,6 @@ def mocked_webserver_rest_api_base(
352383
yield respx_mock
353384

354385

355-
@pytest.fixture
356-
def mocked_webserver_rpc_api(mocker: MockerFixture) -> dict[str, MockType]:
357-
"""
358-
Mocks the webserver's simcore service RPC API for testing purposes.
359-
"""
360-
from servicelib.rabbitmq.rpc_interfaces.webserver import (
361-
projects as projects_rpc, # keep import here
362-
)
363-
364-
side_effects = WebserverRpcSideEffects()
365-
366-
return {
367-
"mark_project_as_job": mocker.patch.object(
368-
projects_rpc,
369-
"mark_project_as_job",
370-
autospec=True,
371-
side_effect=side_effects.mark_project_as_job,
372-
),
373-
"list_projects_marked_as_jobs": mocker.patch.object(
374-
projects_rpc,
375-
"list_projects_marked_as_jobs",
376-
autospec=True,
377-
side_effect=side_effects.list_projects_marked_as_jobs,
378-
),
379-
}
380-
381-
382386
@pytest.fixture
383387
def mocked_storage_rest_api_base(
384388
app: FastAPI,
@@ -473,32 +477,32 @@ def mocked_catalog_rest_api_base(
473477

474478

475479
@pytest.fixture
476-
def mocked_app_dependencies(app: FastAPI, mocker: MockerFixture) -> Iterator[None]:
480+
def mocked_webserver_rpc_api(
481+
mocked_app_dependencies: None, mocker: MockerFixture
482+
) -> dict[str, MockType]:
477483
"""
478-
Mocks some dependency overrides for the FastAPI app.
484+
Mocks the webserver's simcore service RPC API for testing purposes.
479485
"""
480-
from simcore_service_api_server.api.dependencies.rabbitmq import (
481-
get_rabbitmq_rpc_client,
482-
)
483-
from simcore_service_api_server.api.dependencies.webserver_rpc import (
484-
get_wb_api_rpc_client,
485-
)
486-
487-
def _get_rabbitmq_rpc_client_override(app: FastAPI):
488-
return mocker.MagicMock()
489-
490-
async def _get_wb_api_rpc_client_override(app: FastAPI):
491-
return mocker.MagicMock()
492-
493-
app.dependency_overrides[get_rabbitmq_rpc_client] = (
494-
_get_rabbitmq_rpc_client_override
486+
from servicelib.rabbitmq.rpc_interfaces.webserver import (
487+
projects as projects_rpc, # keep import here
495488
)
496-
app.dependency_overrides[get_wb_api_rpc_client] = _get_wb_api_rpc_client_override
497489

498-
yield
490+
side_effects = WebserverRpcSideEffects()
499491

500-
app.dependency_overrides.pop(get_wb_api_rpc_client, None)
501-
app.dependency_overrides.pop(get_rabbitmq_rpc_client, None)
492+
return {
493+
"mark_project_as_job": mocker.patch.object(
494+
projects_rpc,
495+
"mark_project_as_job",
496+
autospec=True,
497+
side_effect=side_effects.mark_project_as_job,
498+
),
499+
"list_projects_marked_as_jobs": mocker.patch.object(
500+
projects_rpc,
501+
"list_projects_marked_as_jobs",
502+
autospec=True,
503+
side_effect=side_effects.list_projects_marked_as_jobs,
504+
),
505+
}
502506

503507

504508
@pytest.fixture

0 commit comments

Comments
 (0)