mirror of
https://github.com/home-assistant/core.git
synced 2025-07-10 14:57:09 +00:00
Fix meaters not being added after a reload (#147614)
This commit is contained in:
parent
26521f8cc0
commit
c0ec987b07
@ -25,4 +25,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bo
|
|||||||
|
|
||||||
async def async_unload_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bool:
|
async def async_unload_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bool:
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
|
||||||
|
hass.data[MEATER_DATA] = (
|
||||||
|
hass.data[MEATER_DATA] - entry.runtime_data.found_probes
|
||||||
|
)
|
||||||
|
return unload_ok
|
||||||
|
@ -44,6 +44,7 @@ class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]):
|
|||||||
)
|
)
|
||||||
session = async_get_clientsession(hass)
|
session = async_get_clientsession(hass)
|
||||||
self.client = MeaterApi(session)
|
self.client = MeaterApi(session)
|
||||||
|
self.found_probes: set[str] = set()
|
||||||
|
|
||||||
async def _async_setup(self) -> None:
|
async def _async_setup(self) -> None:
|
||||||
"""Set up the Meater Coordinator."""
|
"""Set up the Meater Coordinator."""
|
||||||
@ -73,5 +74,6 @@ class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]):
|
|||||||
raise UpdateFailed(
|
raise UpdateFailed(
|
||||||
"Too many requests have been made to the API, rate limiting is in place"
|
"Too many requests have been made to the API, rate limiting is in place"
|
||||||
) from err
|
) from err
|
||||||
|
res = {device.id: device for device in devices}
|
||||||
return {device.id: device for device in devices}
|
self.found_probes.update(set(res.keys()))
|
||||||
|
return res
|
||||||
|
@ -5,8 +5,10 @@ from unittest.mock import AsyncMock
|
|||||||
from syrupy.assertion import SnapshotAssertion
|
from syrupy.assertion import SnapshotAssertion
|
||||||
|
|
||||||
from homeassistant.components.meater.const import DOMAIN
|
from homeassistant.components.meater.const import DOMAIN
|
||||||
|
from homeassistant.config_entries import ConfigEntryState
|
||||||
|
from homeassistant.const import STATE_UNAVAILABLE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
|
|
||||||
from . import setup_integration
|
from . import setup_integration
|
||||||
from .const import PROBE_ID
|
from .const import PROBE_ID
|
||||||
@ -26,3 +28,43 @@ async def test_device_info(
|
|||||||
device_entry = device_registry.async_get_device(identifiers={(DOMAIN, PROBE_ID)})
|
device_entry = device_registry.async_get_device(identifiers={(DOMAIN, PROBE_ID)})
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry == snapshot
|
assert device_entry == snapshot
|
||||||
|
|
||||||
|
|
||||||
|
async def test_load_unload(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_meater_client: AsyncMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
entity_registry: er.EntityRegistry,
|
||||||
|
) -> None:
|
||||||
|
"""Test unload of Meater integration."""
|
||||||
|
await setup_integration(hass, mock_config_entry)
|
||||||
|
|
||||||
|
assert mock_config_entry.state is ConfigEntryState.LOADED
|
||||||
|
assert (
|
||||||
|
len(
|
||||||
|
er.async_entries_for_config_entry(
|
||||||
|
entity_registry, mock_config_entry.entry_id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
== 8
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
hass.states.get("sensor.meater_probe_40a72384_ambient_temperature").state
|
||||||
|
!= STATE_UNAVAILABLE
|
||||||
|
)
|
||||||
|
|
||||||
|
assert await hass.config_entries.async_reload(mock_config_entry.entry_id)
|
||||||
|
|
||||||
|
assert mock_config_entry.state is ConfigEntryState.LOADED
|
||||||
|
assert (
|
||||||
|
len(
|
||||||
|
er.async_entries_for_config_entry(
|
||||||
|
entity_registry, mock_config_entry.entry_id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
== 8
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
hass.states.get("sensor.meater_probe_40a72384_ambient_temperature").state
|
||||||
|
!= STATE_UNAVAILABLE
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user