Files
core/tests/components/iometer/test_init.py
2025-10-22 23:57:58 +03:00

68 lines
2.3 KiB
Python

"""Tests for the IOmeter integration."""
from datetime import timedelta
from unittest.mock import AsyncMock
from freezegun.api import FrozenDateTimeFactory
from iometer import IOmeterConnectionError
import pytest
from homeassistant.components.iometer import async_setup_entry
from homeassistant.components.iometer.const import DOMAIN
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import device_registry as dr
from . import setup_platform
from tests.common import MockConfigEntry, async_fire_time_changed
async def test_new_firmware_version(
hass: HomeAssistant,
mock_iometer_client: AsyncMock,
mock_config_entry: MockConfigEntry,
device_registry: dr.DeviceRegistry,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test device registry integration."""
assert mock_config_entry.unique_id is not None
await setup_platform(hass, mock_config_entry, [Platform.SENSOR])
device_entry = device_registry.async_get_device(
identifiers={(DOMAIN, mock_config_entry.unique_id)}
)
assert device_entry is not None
assert device_entry.sw_version == "build-58/build-65"
mock_iometer_client.get_current_status.return_value.device.core.version = "build-62"
mock_iometer_client.get_current_status.return_value.device.bridge.version = (
"build-69"
)
freezer.tick(timedelta(minutes=1))
async_fire_time_changed(hass)
await hass.async_block_till_done()
device_entry = device_registry.async_get_device(
identifiers={(DOMAIN, mock_config_entry.unique_id)}
)
assert device_entry is not None
assert device_entry.sw_version == "build-62/build-69"
async def test_async_setup_entry_connection_error(
hass: HomeAssistant,
mock_iometer_client: AsyncMock,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test async_setup_entry raises ConfigEntryNotReady on connection error."""
mock_config_entry.add_to_hass(hass)
mock_iometer_client.get_current_status.side_effect = IOmeterConnectionError(
"cannot connect"
)
with pytest.raises(ConfigEntryNotReady):
await async_setup_entry(hass, mock_config_entry)
assert mock_iometer_client.get_current_status.await_count == 1