mirror of https://github.com/home-assistant/core
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
"""IKEA Idasen Desk fixtures."""
|
|
|
|
from collections.abc import Callable, Generator
|
|
from unittest import mock
|
|
from unittest.mock import AsyncMock, MagicMock
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def mock_bluetooth(enable_bluetooth: None) -> Generator[None]:
|
|
"""Auto mock bluetooth."""
|
|
with mock.patch(
|
|
"homeassistant.components.idasen_desk.bluetooth.async_ble_device_from_address"
|
|
):
|
|
yield
|
|
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def mock_desk_api():
|
|
"""Set up idasen desk API fixture."""
|
|
with mock.patch(
|
|
"homeassistant.components.idasen_desk.coordinator.Desk"
|
|
) as desk_patched:
|
|
mock_desk = MagicMock()
|
|
|
|
def mock_init(
|
|
update_callback: Callable[[int | None], None] | None,
|
|
monitor_height: bool = True,
|
|
):
|
|
mock_desk.trigger_update_callback = update_callback
|
|
return mock_desk
|
|
|
|
desk_patched.side_effect = mock_init
|
|
|
|
async def mock_connect(ble_device):
|
|
mock_desk.is_connected = True
|
|
mock_desk.trigger_update_callback(None)
|
|
|
|
async def mock_disconnect():
|
|
mock_desk.is_connected = False
|
|
mock_desk.trigger_update_callback(None)
|
|
|
|
async def mock_move_to(height: float):
|
|
mock_desk.height_percent = height
|
|
mock_desk.trigger_update_callback(height)
|
|
|
|
async def mock_move_up():
|
|
await mock_move_to(100)
|
|
|
|
async def mock_move_down():
|
|
await mock_move_to(0)
|
|
|
|
mock_desk.connect = AsyncMock(side_effect=mock_connect)
|
|
mock_desk.disconnect = AsyncMock(side_effect=mock_disconnect)
|
|
mock_desk.move_to = AsyncMock(side_effect=mock_move_to)
|
|
mock_desk.move_up = AsyncMock(side_effect=mock_move_up)
|
|
mock_desk.move_down = AsyncMock(side_effect=mock_move_down)
|
|
mock_desk.stop = AsyncMock()
|
|
mock_desk.height = 1
|
|
mock_desk.height_percent = 60
|
|
mock_desk.is_moving = False
|
|
mock_desk.address = "AA:BB:CC:DD:EE:FF"
|
|
|
|
yield mock_desk
|