mirror of
https://github.com/home-assistant/core.git
synced 2026-08-28 18:24:50 -05:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Fixtures for the Fronius integration tests."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from modbus_connection import ModbusConnectionError
|
|
from modbus_connection.mock import MockModbusConnection
|
|
import pytest
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def mock_modbus_unavailable(
|
|
mock_modbus_connection: MockModbusConnection,
|
|
) -> Generator[MagicMock]:
|
|
"""Refuse every Modbus request by default so tests run HTTP-only."""
|
|
|
|
def _refusing_unit(
|
|
hass: HomeAssistant, entry: ConfigEntry, params: object, unit_id: int
|
|
) -> object:
|
|
unit = mock_modbus_connection.for_unit(unit_id)
|
|
unit.fail_requests(ModbusConnectionError("Modbus disabled in tests"))
|
|
return unit
|
|
|
|
with patch(
|
|
"homeassistant.components.fronius.async_get_unit",
|
|
MagicMock(side_effect=_refusing_unit),
|
|
) as mock_get_unit:
|
|
yield mock_get_unit
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_fronius_modbus(
|
|
mock_modbus_unavailable: MagicMock,
|
|
mock_modbus_connection: MockModbusConnection,
|
|
) -> MockModbusConnection:
|
|
"""Answer Modbus requests from the mock connection."""
|
|
mock_modbus_unavailable.side_effect = lambda hass, entry, params, unit_id: (
|
|
mock_modbus_connection.for_unit(unit_id)
|
|
)
|
|
return mock_modbus_connection
|