|
2 | 2 |
|
3 | 3 | import asyncio |
4 | 4 | from datetime import timedelta |
5 | | -from functools import update_wrapper |
6 | 5 | from typing import Any |
7 | 6 | from unittest.mock import AsyncMock |
8 | 7 |
|
9 | | -import pytest |
10 | | - |
11 | 8 | from crawlee.events import LocalEventManager |
12 | 9 | from crawlee.events._types import Event, EventSystemInfoData |
13 | 10 |
|
14 | 11 |
|
15 | | -@pytest.fixture |
16 | | -def listener() -> AsyncMock: |
17 | | - async def async_listener(payload: Any) -> None: |
18 | | - pass |
19 | | - |
20 | | - al = AsyncMock() |
21 | | - update_wrapper(al, async_listener) |
22 | | - return al |
| 12 | +async def test_emit_system_info_event() -> None: |
| 13 | + mocked_listener = AsyncMock() |
23 | 14 |
|
| 15 | + async def async_listener(payload: Any) -> None: |
| 16 | + mocked_listener(payload) |
24 | 17 |
|
25 | | -async def test_emit_system_info_event(listener: AsyncMock) -> None: |
26 | | - async with LocalEventManager(system_info_interval=timedelta(milliseconds=50)) as event_manager: |
27 | | - event_manager.on(event=Event.SYSTEM_INFO, listener=listener) |
28 | | - await asyncio.sleep(0.2) |
| 18 | + system_info_interval = timedelta(milliseconds=50) |
| 19 | + test_tolerance_coefficient = 10 |
| 20 | + async with LocalEventManager(system_info_interval=system_info_interval) as event_manager: |
| 21 | + event_manager.on(event=Event.SYSTEM_INFO, listener=async_listener) |
| 22 | + await asyncio.sleep(system_info_interval.total_seconds() * test_tolerance_coefficient) |
29 | 23 |
|
30 | | - assert listener.call_count >= 1 |
31 | | - assert isinstance(listener.call_args[0][0], EventSystemInfoData) |
| 24 | + assert mocked_listener.call_count >= 1 |
| 25 | + assert isinstance(mocked_listener.call_args[0][0], EventSystemInfoData) |
0 commit comments