Skip to content

Commit f26b047

Browse files
committed
refactor
1 parent e3540da commit f26b047

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

services/web/server/tests/unit/with_dbs/04/notifications/test_notifications__db_comp_tasks_listening_task.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@
1313
from unittest import mock
1414

1515
import pytest
16+
import simcore_service_webserver
17+
import simcore_service_webserver.db_listener
18+
import simcore_service_webserver.db_listener._db_comp_tasks_listening_task
1619
from aiohttp.test_utils import TestClient
1720
from faker import Faker
1821
from models_library.projects import ProjectAtDB
22+
from pytest_mock import MockType
1923
from pytest_mock.plugin import MockerFixture
2024
from pytest_simcore.helpers.webserver_login import UserInfoDict
2125
from simcore_postgres_database.models.comp_pipeline import StateType
@@ -75,6 +79,16 @@ async def with_started_listening_task(client: TestClient) -> AsyncIterator:
7579
yield
7680

7781

82+
@pytest.fixture
83+
async def spied_get_changed_comp_task_row(
84+
mocker: MockerFixture,
85+
) -> MockType:
86+
return mocker.spy(
87+
simcore_service_webserver.db_listener._db_comp_tasks_listening_task, # noqa: SLF001
88+
"_get_changed_comp_task_row",
89+
)
90+
91+
7892
@dataclass(frozen=True, slots=True)
7993
class _CompTaskChangeParams:
8094
update_values: dict[str, Any]
@@ -151,6 +165,7 @@ async def _assert_listener_triggers(
151165
async def test_db_listener_triggers_on_event_with_multiple_tasks(
152166
sqlalchemy_async_engine: AsyncEngine,
153167
mock_project_subsystem: dict[str, mock.Mock],
168+
spied_get_changed_comp_task_row: MockType,
154169
logged_user: UserInfoDict,
155170
project: Callable[..., Awaitable[ProjectAtDB]],
156171
pipeline: Callable[..., dict[str, Any]],
@@ -159,6 +174,7 @@ async def test_db_listener_triggers_on_event_with_multiple_tasks(
159174
params: _CompTaskChangeParams,
160175
task_class: NodeClass,
161176
faker: Faker,
177+
mocker: MockerFixture,
162178
):
163179
some_project = await project(logged_user)
164180
pipeline(project_id=f"{some_project.uuid}")
@@ -173,10 +189,21 @@ async def test_db_listener_triggers_on_event_with_multiple_tasks(
173189
for _ in range(3)
174190
]
175191
random_task_to_update = tasks[secrets.randbelow(len(tasks))]
192+
updated_task_id = random_task_to_update["task_id"]
193+
176194
async with sqlalchemy_async_engine.begin() as conn:
177195
await conn.execute(
178196
comp_tasks.update()
179197
.values(**params.update_values)
180-
.where(comp_tasks.c.task_id == random_task_to_update["task_id"])
198+
.where(comp_tasks.c.task_id == updated_task_id)
181199
)
182200
await _assert_listener_triggers(mock_project_subsystem, params.expected_calls)
201+
202+
# Assert the spy was called with the correct task_id
203+
if params.expected_calls:
204+
assert any(
205+
call.args[1] == updated_task_id
206+
for call in spied_get_changed_comp_task_row.call_args_list
207+
), f"_get_changed_comp_task_row was not called with task_id={updated_task_id}. Calls: {spy_get_changed.call_args_list}"
208+
else:
209+
spied_get_changed_comp_task_row.assert_not_called()

0 commit comments

Comments
 (0)