mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 05:37:44 +00:00
Add LaMetric integration init tests (#78679)
This commit is contained in:
parent
b5c1f856e2
commit
36eda3801d
@ -648,9 +648,7 @@ omit =
|
||||
homeassistant/components/kostal_plenticore/switch.py
|
||||
homeassistant/components/kwb/sensor.py
|
||||
homeassistant/components/lacrosse/sensor.py
|
||||
homeassistant/components/lametric/__init__.py
|
||||
homeassistant/components/lametric/button.py
|
||||
homeassistant/components/lametric/coordinator.py
|
||||
homeassistant/components/lametric/entity.py
|
||||
homeassistant/components/lametric/notify.py
|
||||
homeassistant/components/lametric/number.py
|
||||
|
@ -79,3 +79,18 @@ def mock_lametric_cloud_config_flow() -> Generator[MagicMock, None, None]:
|
||||
list[CloudDevice], load_fixture("cloud_devices.json", DOMAIN)
|
||||
)
|
||||
yield lametric
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_lametric() -> Generator[MagicMock, None, None]:
|
||||
"""Return a mocked LaMetric client."""
|
||||
with patch(
|
||||
"homeassistant.components.lametric.coordinator.LaMetricDevice", autospec=True
|
||||
) as lametric_mock:
|
||||
lametric = lametric_mock.return_value
|
||||
lametric.api_key = "mock-api-key"
|
||||
lametric.host = "127.0.0.1"
|
||||
lametric.device.return_value = Device.parse_raw(
|
||||
load_fixture("device.json", DOMAIN)
|
||||
)
|
||||
yield lametric
|
||||
|
72
tests/components/lametric/test_init.py
Normal file
72
tests/components/lametric/test_init.py
Normal file
@ -0,0 +1,72 @@
|
||||
"""Tests for the LaMetric integration."""
|
||||
from collections.abc import Awaitable, Callable
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from aiohttp import ClientWebSocketResponse
|
||||
from demetriek import LaMetricConnectionError, LaMetricConnectionTimeoutError
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.lametric.const import DOMAIN
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from tests.components.repairs import get_repairs
|
||||
|
||||
|
||||
async def test_load_unload_config_entry(
|
||||
hass: HomeAssistant,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
mock_lametric: MagicMock,
|
||||
) -> None:
|
||||
"""Test the LaMetric configuration entry loading/unloading."""
|
||||
mock_config_entry.add_to_hass(hass)
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert mock_config_entry.state is ConfigEntryState.LOADED
|
||||
assert len(mock_lametric.device.mock_calls) == 1
|
||||
|
||||
await hass.config_entries.async_unload(mock_config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert mock_config_entry.state is ConfigEntryState.NOT_LOADED
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"side_effect", [LaMetricConnectionTimeoutError, LaMetricConnectionError]
|
||||
)
|
||||
async def test_config_entry_not_ready(
|
||||
hass: HomeAssistant,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
mock_lametric: MagicMock,
|
||||
side_effect: Exception,
|
||||
) -> None:
|
||||
"""Test the LaMetric configuration entry not ready."""
|
||||
mock_lametric.device.side_effect = side_effect
|
||||
|
||||
mock_config_entry.add_to_hass(hass)
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(mock_lametric.device.mock_calls) == 1
|
||||
assert mock_config_entry.state is ConfigEntryState.SETUP_RETRY
|
||||
|
||||
|
||||
async def test_yaml_config_raises_repairs(
|
||||
hass: HomeAssistant,
|
||||
hass_ws_client: Callable[[HomeAssistant], Awaitable[ClientWebSocketResponse]],
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test that YAML configuration raises an repairs issue."""
|
||||
await async_setup_component(
|
||||
hass, DOMAIN, {DOMAIN: {CONF_CLIENT_ID: "foo", CONF_CLIENT_SECRET: "bar"}}
|
||||
)
|
||||
|
||||
assert "The 'lametric' option is deprecated" in caplog.text
|
||||
|
||||
issues = await get_repairs(hass, hass_ws_client)
|
||||
assert len(issues) == 1
|
||||
assert issues[0]["issue_id"] == "manual_migration"
|
Loading…
x
Reference in New Issue
Block a user