mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 07:07:28 +00:00
Ensure WiZ is reloaded on title change (#68147)
This commit is contained in:
parent
a9fd744247
commit
59c4c75915
@ -54,6 +54,11 @@ async def async_setup(hass: HomeAssistant, hass_config: ConfigType) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||||
|
"""Handle options update."""
|
||||||
|
await hass.config_entries.async_reload(entry.entry_id)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
"""Set up the wiz integration from a config entry."""
|
"""Set up the wiz integration from a config entry."""
|
||||||
ip_address = entry.data[CONF_HOST]
|
ip_address = entry.data[CONF_HOST]
|
||||||
@ -123,6 +128,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
coordinator=coordinator, bulb=bulb, scenes=scenes
|
coordinator=coordinator, bulb=bulb, scenes=scenes
|
||||||
)
|
)
|
||||||
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
|
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
|
||||||
|
|
||||||
|
entry.async_on_unload(entry.add_update_listener(_async_update_listener))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import datetime
|
|||||||
from unittest.mock import AsyncMock
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
from homeassistant.const import EVENT_HOMEASSISTANT_STOP
|
from homeassistant.const import ATTR_FRIENDLY_NAME, EVENT_HOMEASSISTANT_STOP
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.util.dt import utcnow
|
from homeassistant.util.dt import utcnow
|
||||||
|
|
||||||
@ -24,20 +24,20 @@ async def test_setup_retry(hass: HomeAssistant) -> None:
|
|||||||
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
||||||
bulb.getMac = AsyncMock(side_effect=OSError)
|
bulb.getMac = AsyncMock(side_effect=OSError)
|
||||||
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
||||||
assert entry.state == config_entries.ConfigEntryState.SETUP_RETRY
|
assert entry.state is config_entries.ConfigEntryState.SETUP_RETRY
|
||||||
bulb.getMac = AsyncMock(return_value=FAKE_MAC)
|
bulb.getMac = AsyncMock(return_value=FAKE_MAC)
|
||||||
|
|
||||||
with _patch_discovery(), _patch_wizlight(device=bulb):
|
with _patch_discovery(), _patch_wizlight(device=bulb):
|
||||||
async_fire_time_changed(hass, utcnow() + datetime.timedelta(minutes=15))
|
async_fire_time_changed(hass, utcnow() + datetime.timedelta(minutes=15))
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert entry.state == config_entries.ConfigEntryState.LOADED
|
assert entry.state is config_entries.ConfigEntryState.LOADED
|
||||||
|
|
||||||
|
|
||||||
async def test_cleanup_on_shutdown(hass: HomeAssistant) -> None:
|
async def test_cleanup_on_shutdown(hass: HomeAssistant) -> None:
|
||||||
"""Test the socket is cleaned up on shutdown."""
|
"""Test the socket is cleaned up on shutdown."""
|
||||||
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
||||||
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
||||||
assert entry.state == config_entries.ConfigEntryState.LOADED
|
assert entry.state is config_entries.ConfigEntryState.LOADED
|
||||||
hass.bus.async_fire(EVENT_HOMEASSISTANT_STOP)
|
hass.bus.async_fire(EVENT_HOMEASSISTANT_STOP)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
bulb.async_close.assert_called_once()
|
bulb.async_close.assert_called_once()
|
||||||
@ -48,7 +48,7 @@ async def test_cleanup_on_failed_first_update(hass: HomeAssistant) -> None:
|
|||||||
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
||||||
bulb.updateState = AsyncMock(side_effect=OSError)
|
bulb.updateState = AsyncMock(side_effect=OSError)
|
||||||
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
||||||
assert entry.state == config_entries.ConfigEntryState.SETUP_RETRY
|
assert entry.state is config_entries.ConfigEntryState.SETUP_RETRY
|
||||||
bulb.async_close.assert_called_once()
|
bulb.async_close.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
@ -57,4 +57,22 @@ async def test_wrong_device_now_has_our_ip(hass: HomeAssistant) -> None:
|
|||||||
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
||||||
bulb.mac = "dddddddddddd"
|
bulb.mac = "dddddddddddd"
|
||||||
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
||||||
assert entry.state == config_entries.ConfigEntryState.SETUP_RETRY
|
assert entry.state is config_entries.ConfigEntryState.SETUP_RETRY
|
||||||
|
|
||||||
|
|
||||||
|
async def test_reload_on_title_change(hass: HomeAssistant) -> None:
|
||||||
|
"""Test the integration gets reloaded when the title is updated."""
|
||||||
|
bulb = _mocked_wizlight(None, None, FAKE_SOCKET)
|
||||||
|
_, entry = await async_setup_integration(hass, wizlight=bulb)
|
||||||
|
assert entry.state is config_entries.ConfigEntryState.LOADED
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
with _patch_discovery(), _patch_wizlight(device=bulb):
|
||||||
|
hass.config_entries.async_update_entry(entry, title="Shop Switch")
|
||||||
|
assert entry.title == "Shop Switch"
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert (
|
||||||
|
hass.states.get("switch.mock_title").attributes[ATTR_FRIENDLY_NAME]
|
||||||
|
== "Shop Switch"
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user