hass-core/tests/components/coolmaster/conftest.py

99 lines
2.5 KiB
Python
Raw Normal View History

"""Fixtures for the Coolmaster integration."""
from __future__ import annotations
import copy
from typing import Any
from unittest.mock import patch
import pytest
from homeassistant.components.coolmaster.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
DEFAULT_INFO: dict[str, str] = {
"version": "1",
}
DEFUALT_UNIT_DATA: dict[str, Any] = {
"is_on": False,
"thermostat": 20,
"temperature": 25,
"fan_speed": "low",
"mode": "cool",
"error_code": None,
"clean_filter": False,
"swing": None,
"temperature_unit": "celsius",
}
TEST_UNITS: dict[dict[str, Any]] = {
"L1.100": {**DEFUALT_UNIT_DATA},
"L1.101": {
**DEFUALT_UNIT_DATA,
**{
"is_on": True,
"clean_filter": True,
"error_code": "Err1",
},
},
}
class CoolMasterNetUnitMock:
"""Mock for CoolMasterNetUnit."""
def __init__(self, unit_id: str, attributes: dict[str, Any]) -> None:
"""Initialize the CoolMasterNetUnitMock."""
self.unit_id = unit_id
self._attributes = attributes
for key, value in attributes.items():
setattr(self, key, value)
async def reset_filter(self):
"""Report that the air filter was cleaned and reset the timer."""
self._attributes["clean_filter"] = False
class CoolMasterNetMock:
"""Mock for CoolMasterNet."""
def __init__(self, *_args: Any) -> None:
"""Initialize the CoolMasterNetMock."""
self._data = copy.deepcopy(TEST_UNITS)
async def info(self) -> dict[str, Any]:
"""Return info about the bridge device."""
return DEFAULT_INFO
async def status(self) -> dict[str, CoolMasterNetUnitMock]:
"""Return the units."""
return {
key: CoolMasterNetUnitMock(key, attributes)
for key, attributes in self._data.items()
}
@pytest.fixture
async def load_int(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Coolmaster integration in Home Assistant."""
config_entry = MockConfigEntry(
domain=DOMAIN,
data={
"host": "1.2.3.4",
"port": 1234,
},
)
config_entry.add_to_hass(hass)
with patch(
"homeassistant.components.coolmaster.CoolMasterNet",
new=CoolMasterNetMock,
):
await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
return config_entry