99from celery .signals import worker_init , worker_shutdown
1010from celery .worker .worker import WorkController
1111from celery_library .signals import on_worker_init , on_worker_shutdown
12+ from fakeredis .aioredis import FakeRedis
13+ from pytest_mock import MockerFixture
1214from pytest_simcore .helpers .monkeypatch_envs import delenvs_from_dict , setenvs_from_dict
1315from pytest_simcore .helpers .typing_env import EnvVarsDict
1416from servicelib .fastapi .celery .app_server import FastAPIAppServer
@@ -33,15 +35,33 @@ def celery_config() -> dict[str, Any]:
3335 }
3436
3537
38+ @pytest .fixture
39+ async def mocked_redis_server (mocker : MockerFixture ) -> None :
40+ mock_redis = FakeRedis ()
41+ mocker .patch ("redis.asyncio.from_url" , return_value = mock_redis )
42+
43+
44+ @pytest .fixture
45+ def mock_celery_app (mocker : MockerFixture , celery_config : dict [str , Any ]) -> Celery :
46+ celery_app = Celery (** celery_config )
47+
48+ for module in ("simcore_service_api_server.api.dependencies.celery.create_app" ,):
49+ mocker .patch (module , return_value = celery_app )
50+
51+ return celery_app
52+
53+
3654@pytest .fixture
3755def app_environment (
56+ mock_celery_app : Celery ,
57+ mocked_redis_server : None ,
3858 monkeypatch : pytest .MonkeyPatch ,
3959 app_environment : EnvVarsDict ,
4060 rabbit_env_vars_dict : EnvVarsDict ,
4161) -> EnvVarsDict :
4262 # do not init other services
43- delenvs_from_dict (monkeypatch , ["API_SERVER_RABBITMQ" ])
44- return setenvs_from_dict (
63+ delenvs_from_dict (monkeypatch , ["API_SERVER_RABBITMQ" , "API_SERVER_CELERY" ])
64+ env_vars_dict = setenvs_from_dict (
4565 monkeypatch ,
4666 {
4767 ** rabbit_env_vars_dict ,
@@ -51,6 +71,11 @@ def app_environment(
5171 },
5272 )
5373
74+ settings = ApplicationSettings .create_from_envs ()
75+ assert settings .API_SERVER_CELERY is not None
76+
77+ return env_vars_dict
78+
5479
5580@pytest .fixture
5681def register_celery_tasks () -> Callable [[Celery ], None ]:
0 commit comments