Skip to content

Commit 3dcfbc4

Browse files
committed
feat: add HandlerMockFactory for improved mock handling in tests
1 parent 508d822 commit 3dcfbc4

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from collections.abc import Callable
2+
from typing import Any, Protocol
3+
4+
from pytest_mock import MockType
5+
6+
7+
class HandlerMockFactory(Protocol):
8+
def __call__(
9+
self,
10+
handler_name: str,
11+
return_value: Any = None,
12+
exception: Exception | None = None,
13+
side_effect: Callable | None = None,
14+
) -> MockType: ...

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from pytest_mock import MockerFixture, MockType
3838
from pytest_simcore.helpers.monkeypatch_envs import setenvs_from_dict
3939
from pytest_simcore.helpers.typing_env import EnvVarsDict
40+
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
4041
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
4142
from simcore_service_api_server.api.dependencies import services
4243
from simcore_service_api_server.api.dependencies.services import get_rabbitmq_rpc_client
@@ -273,7 +274,7 @@ def fake_registered_function_job_collection(
273274
def mock_handler_in_functions_rpc_interface(
274275
mock_get_wb_api_rpc_client: None,
275276
mocker: MockerFixture,
276-
) -> Callable[[str, Any, Exception | None, Callable | None], MockType]:
277+
) -> HandlerMockFactory:
277278
def _create(
278279
handler_name: str = "",
279280
return_value: Any = None,

services/api-server/tests/unit/api_functions/test_api_routers_function_jobs.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,6 @@ def mocked_list_function_jobs(offset: int, limit: int):
241241
auth=auth,
242242
)
243243
mock_list_function_jobs.assert_called_with(
244-
ANY, # Dummy rpc client
245244
filter_by_function_job_ids=[fake_registered_project_function_job.uid],
246245
filter_by_function_job_collection_id=None,
247246
filter_by_function_id=None,

services/api-server/tests/unit/api_solvers/test_api_routers_solvers_jobs_delete.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,8 @@ async def test_delete_job_assets_endpoint(
287287
assert storage_rest["delete_project_s3_assets"].called
288288

289289
webserver_rpc = mocked_backend_services_apis_for_delete_job_assets["webserver_rpc"]
290-
assert webserver_rpc["mark_project_as_job"].called
290+
assert webserver_rpc["mocked_rabbit_rpc_client"].request.called
291+
assert webserver_rpc["mocked_rabbit_rpc_client"].request.call_args.args == (
292+
"wb-api-server",
293+
"mark_project_as_job",
294+
)

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import asyncio
88
from collections.abc import Callable
9-
from typing import Any, Protocol, cast
9+
from typing import Any, cast
1010
from uuid import UUID
1111

1212
import pytest
@@ -32,6 +32,7 @@
3232
from models_library.wallets import WalletID
3333
from pydantic import TypeAdapter
3434
from pytest_mock import MockerFixture, MockType
35+
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
3536
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
3637
from servicelib.rabbitmq._errors import RemoteMethodNotRegisteredError
3738
from servicelib.rabbitmq.rpc_interfaces.resource_usage_tracker.errors import (
@@ -79,16 +80,6 @@ async def mock_rut_rpc(app: FastAPI, mocker: MockerFixture) -> None:
7980
)
8081

8182

82-
class HandlerMockFactory(Protocol):
83-
def __call__(
84-
self,
85-
handler_name: str = "",
86-
return_value: Any = None,
87-
exception: Exception | None = None,
88-
side_effect: Callable | None = None,
89-
) -> MockType: ...
90-
91-
9283
@pytest.fixture()
9384
def mock_handler_in_licenses_rpc_interface(
9485
mock_wb_api_server_rcp: None,

0 commit comments

Comments
 (0)