File: conftest.py

package info (click to toggle)
python-idasen-ha 2.6.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 188 kB
  • sloc: python: 571; sh: 5; makefile: 4
file content (51 lines) | stat: -rw-r--r-- 1,640 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""Generic test fixtures."""

from collections.abc import Awaitable
from typing import Callable, Optional
from unittest import mock
from unittest.mock import AsyncMock

from bleak import BleakClient
from idasen import IdasenDesk
import pytest


@pytest.fixture(autouse=False)
async def mock_idasen_desk():
    """Test height monitoring."""

    with mock.patch(
        "idasen_ha.connection_manager.IdasenDesk", autospec=True
    ) as patched_idasen_desk:
        patched_idasen_desk.MIN_HEIGHT = IdasenDesk.MIN_HEIGHT
        patched_idasen_desk.MAX_HEIGHT = IdasenDesk.MAX_HEIGHT

        mock_desk = patched_idasen_desk.return_value

        def mock_init(
            mac_bledevice,
            exit_on_fail: bool = False,
            disconnected_callback: Optional[Callable[[BleakClient], None]] = None,
        ):
            mock_desk.trigger_disconnected_callback = disconnected_callback
            return mock_desk

        patched_idasen_desk.side_effect = mock_init

        async def mock_connect():
            mock_desk.is_connected = True

        async def mock_disconnect():
            mock_desk.is_connected = False
            mock_desk.trigger_disconnected_callback(None)

        async def mock_monitor(callback: Callable[[float], Awaitable[None]]) -> None:
            mock_desk.trigger_monitor_callback = callback

        mock_desk.connect = AsyncMock(side_effect=mock_connect)
        mock_desk.disconnect = AsyncMock(side_effect=mock_disconnect)
        mock_desk.monitor = AsyncMock(side_effect=mock_monitor)
        mock_desk.is_connected = False
        mock_desk.is_moving = False

        yield mock_desk