56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
"""ESPHome test common code."""
|
|
|
|
from datetime import datetime
|
|
|
|
from homeassistant.components import assist_satellite
|
|
from homeassistant.components.assist_satellite import AssistSatelliteEntity
|
|
from homeassistant.components.esphome import DOMAIN
|
|
from homeassistant.components.esphome.assist_satellite import EsphomeAssistSatellite
|
|
from homeassistant.components.esphome.coordinator import REFRESH_INTERVAL
|
|
from homeassistant.const import Platform
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import entity_registry as er
|
|
from homeassistant.helpers.entity_component import EntityComponent
|
|
from homeassistant.util import dt as dt_util
|
|
|
|
from tests.common import async_fire_time_changed
|
|
|
|
|
|
class MockDashboardRefresh:
|
|
"""Mock dashboard refresh."""
|
|
|
|
def __init__(self, hass: HomeAssistant) -> None:
|
|
"""Initialize the mock dashboard refresh."""
|
|
self.hass = hass
|
|
self.last_time: datetime | None = None
|
|
|
|
async def async_refresh(self) -> None:
|
|
"""Refresh the dashboard."""
|
|
if self.last_time is None:
|
|
self.last_time = dt_util.utcnow()
|
|
self.last_time += REFRESH_INTERVAL
|
|
async_fire_time_changed(self.hass, self.last_time)
|
|
await self.hass.async_block_till_done()
|
|
|
|
|
|
def get_satellite_entity(
|
|
hass: HomeAssistant, mac_address: str
|
|
) -> EsphomeAssistSatellite | None:
|
|
"""Get the satellite entity for a device."""
|
|
ent_reg = er.async_get(hass)
|
|
satellite_entity_id = ent_reg.async_get_entity_id(
|
|
Platform.ASSIST_SATELLITE, DOMAIN, f"{mac_address}-assist_satellite"
|
|
)
|
|
if satellite_entity_id is None:
|
|
return None
|
|
assert satellite_entity_id.endswith("_assist_satellite")
|
|
|
|
component: EntityComponent[AssistSatelliteEntity] = hass.data[
|
|
assist_satellite.DOMAIN
|
|
]
|
|
if (entity := component.get_entity(satellite_entity_id)) is not None:
|
|
assert isinstance(entity, EsphomeAssistSatellite)
|
|
return entity
|
|
|
|
return None
|