core/tests/components/switcher_kis/conftest.py

71 lines
1.8 KiB
Python

"""Common fixtures and objects for the Switcher integration tests."""
from unittest.mock import AsyncMock, Mock, patch
import pytest
@pytest.fixture
def mock_bridge(request):
"""Return a mocked SwitcherBridge."""
with patch(
"homeassistant.components.switcher_kis.utils.SwitcherBridge", autospec=True
) as bridge_mock:
bridge = bridge_mock.return_value
bridge.devices = []
if hasattr(request, "param") and request.param:
bridge.devices = request.param
async def start():
bridge.is_running = True
for device in bridge.devices:
bridge_mock.call_args[0][0](device)
def mock_callbacks(devices):
for device in devices:
bridge_mock.call_args[0][0](device)
async def stop():
bridge.is_running = False
bridge.start = AsyncMock(side_effect=start)
bridge.mock_callbacks = Mock(side_effect=mock_callbacks)
bridge.stop = AsyncMock(side_effect=stop)
yield bridge
@pytest.fixture
def mock_api():
"""Fixture for mocking aioswitcher.api.SwitcherApi."""
api_mock = AsyncMock()
patchers = [
patch(
"homeassistant.components.switcher_kis.switch.SwitcherType1Api.connect",
new=api_mock,
),
patch(
"homeassistant.components.switcher_kis.switch.SwitcherType1Api.disconnect",
new=api_mock,
),
patch(
"homeassistant.components.switcher_kis.climate.SwitcherType2Api.connect",
new=api_mock,
),
patch(
"homeassistant.components.switcher_kis.climate.SwitcherType2Api.disconnect",
new=api_mock,
),
]
for patcher in patchers:
patcher.start()
yield api_mock
for patcher in patchers:
patcher.stop()