121 lines
3.8 KiB
Python
121 lines
3.8 KiB
Python
"""Configurations for the EHEIM Digital tests."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
from eheimdigital.classic_led_ctrl import EheimDigitalClassicLEDControl
|
|
from eheimdigital.classic_vario import EheimDigitalClassicVario
|
|
from eheimdigital.heater import EheimDigitalHeater
|
|
from eheimdigital.hub import EheimDigitalHub
|
|
from eheimdigital.types import (
|
|
AcclimatePacket,
|
|
CCVPacket,
|
|
ClassicVarioDataPacket,
|
|
ClockPacket,
|
|
CloudPacket,
|
|
MoonPacket,
|
|
UsrDtaPacket,
|
|
)
|
|
import pytest
|
|
|
|
from homeassistant.components.eheimdigital.const import DOMAIN
|
|
from homeassistant.const import CONF_HOST
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.common import MockConfigEntry, load_json_object_fixture
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Return the default mocked config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN, data={CONF_HOST: "eheimdigital"}, unique_id="00:00:00:00:00:01"
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def classic_led_ctrl_mock():
|
|
"""Mock a classicLEDcontrol device."""
|
|
classic_led_ctrl = EheimDigitalClassicLEDControl(
|
|
MagicMock(spec=EheimDigitalHub),
|
|
UsrDtaPacket(load_json_object_fixture("classic_led_ctrl/usrdta.json", DOMAIN)),
|
|
)
|
|
classic_led_ctrl.ccv = CCVPacket(
|
|
load_json_object_fixture("classic_led_ctrl/ccv.json", DOMAIN)
|
|
)
|
|
classic_led_ctrl.moon = MoonPacket(
|
|
load_json_object_fixture("classic_led_ctrl/moon.json", DOMAIN)
|
|
)
|
|
classic_led_ctrl.acclimate = AcclimatePacket(
|
|
load_json_object_fixture("classic_led_ctrl/acclimate.json", DOMAIN)
|
|
)
|
|
classic_led_ctrl.cloud = CloudPacket(
|
|
load_json_object_fixture("classic_led_ctrl/cloud.json", DOMAIN)
|
|
)
|
|
classic_led_ctrl.clock = ClockPacket(
|
|
load_json_object_fixture("classic_led_ctrl/clock.json", DOMAIN)
|
|
)
|
|
return classic_led_ctrl
|
|
|
|
|
|
@pytest.fixture
|
|
def heater_mock():
|
|
"""Mock a Heater device."""
|
|
heater = EheimDigitalHeater(
|
|
MagicMock(spec=EheimDigitalHub),
|
|
load_json_object_fixture("heater/usrdta.json", DOMAIN),
|
|
)
|
|
heater.heater_data = load_json_object_fixture("heater/heater_data.json", DOMAIN)
|
|
return heater
|
|
|
|
|
|
@pytest.fixture
|
|
def classic_vario_mock():
|
|
"""Mock a classicVARIO device."""
|
|
classic_vario = EheimDigitalClassicVario(
|
|
MagicMock(spec=EheimDigitalHub),
|
|
UsrDtaPacket(load_json_object_fixture("classic_vario/usrdta.json", DOMAIN)),
|
|
)
|
|
classic_vario.classic_vario_data = ClassicVarioDataPacket(
|
|
load_json_object_fixture("classic_vario/classic_vario_data.json", DOMAIN)
|
|
)
|
|
return classic_vario
|
|
|
|
|
|
@pytest.fixture
|
|
def eheimdigital_hub_mock(
|
|
classic_led_ctrl_mock: MagicMock,
|
|
heater_mock: MagicMock,
|
|
classic_vario_mock: MagicMock,
|
|
) -> Generator[AsyncMock]:
|
|
"""Mock eheimdigital hub."""
|
|
with (
|
|
patch(
|
|
"homeassistant.components.eheimdigital.coordinator.EheimDigitalHub",
|
|
spec=EheimDigitalHub,
|
|
) as eheimdigital_hub_mock,
|
|
patch(
|
|
"homeassistant.components.eheimdigital.config_flow.EheimDigitalHub",
|
|
new=eheimdigital_hub_mock,
|
|
),
|
|
):
|
|
eheimdigital_hub_mock.return_value.devices = {
|
|
"00:00:00:00:00:01": classic_led_ctrl_mock,
|
|
"00:00:00:00:00:02": heater_mock,
|
|
"00:00:00:00:00:03": classic_vario_mock,
|
|
}
|
|
eheimdigital_hub_mock.return_value.main = classic_led_ctrl_mock
|
|
yield eheimdigital_hub_mock
|
|
|
|
|
|
async def init_integration(
|
|
hass: HomeAssistant, mock_config_entry: MockConfigEntry
|
|
) -> None:
|
|
"""Initialize the integration."""
|
|
|
|
mock_config_entry.add_to_hass(hass)
|
|
with patch(
|
|
"homeassistant.components.eheimdigital.coordinator.asyncio.Event", new=AsyncMock
|
|
):
|
|
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|