core/tests/components/eheimdigital/conftest.py

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)