mirror of
https://github.com/home-assistant/core.git
synced 2025-04-27 10:47:51 +00:00
Add reload service to KNX (#95489)
This commit is contained in:
parent
b86b41ebe5
commit
1615f3e1fd
@ -30,6 +30,7 @@ from homeassistant.const import (
|
|||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
|
SERVICE_RELOAD,
|
||||||
Platform,
|
Platform,
|
||||||
)
|
)
|
||||||
from homeassistant.core import Event, HomeAssistant, ServiceCall
|
from homeassistant.core import Event, HomeAssistant, ServiceCall
|
||||||
@ -312,6 +313,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
schema=SERVICE_KNX_EXPOSURE_REGISTER_SCHEMA,
|
schema=SERVICE_KNX_EXPOSURE_REGISTER_SCHEMA,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def _reload_integration(call: ServiceCall) -> None:
|
||||||
|
"""Reload the integration."""
|
||||||
|
await hass.config_entries.async_reload(entry.entry_id)
|
||||||
|
hass.bus.async_fire(f"event_{DOMAIN}_reloaded", context=call.context)
|
||||||
|
|
||||||
|
async_register_admin_service(hass, DOMAIN, SERVICE_RELOAD, _reload_integration)
|
||||||
|
|
||||||
await register_panel(hass)
|
await register_panel(hass)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -106,3 +106,6 @@ exposure_register:
|
|||||||
default: false
|
default: false
|
||||||
selector:
|
selector:
|
||||||
boolean:
|
boolean:
|
||||||
|
reload:
|
||||||
|
name: Reload
|
||||||
|
description: Reload the KNX integration.
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
"""Test KNX services."""
|
"""Test KNX services."""
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from xknx.telegram.apci import GroupValueResponse, GroupValueWrite
|
from xknx.telegram.apci import GroupValueResponse, GroupValueWrite
|
||||||
|
|
||||||
|
from homeassistant.components.knx import async_unload_entry as knx_async_unload_entry
|
||||||
from homeassistant.const import STATE_OFF, STATE_ON
|
from homeassistant.const import STATE_OFF, STATE_ON
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
@ -250,3 +253,24 @@ async def test_exposure_register(hass: HomeAssistant, knx: KNXTestKit) -> None:
|
|||||||
hass.states.async_set(test_entity, STATE_OFF, {test_attribute: 25})
|
hass.states.async_set(test_entity, STATE_OFF, {test_attribute: 25})
|
||||||
await knx.assert_telegram_count(1)
|
await knx.assert_telegram_count(1)
|
||||||
await knx.assert_write(test_address, (25,))
|
await knx.assert_write(test_address, (25,))
|
||||||
|
|
||||||
|
|
||||||
|
async def test_reload_service(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
knx: KNXTestKit,
|
||||||
|
) -> None:
|
||||||
|
"""Test reload service."""
|
||||||
|
await knx.setup_integration({})
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.knx.async_unload_entry", wraps=knx_async_unload_entry
|
||||||
|
) as mock_unload_entry, patch(
|
||||||
|
"homeassistant.components.knx.async_setup_entry"
|
||||||
|
) as mock_setup_entry:
|
||||||
|
await hass.services.async_call(
|
||||||
|
"knx",
|
||||||
|
"reload",
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
mock_unload_entry.assert_called_once()
|
||||||
|
mock_setup_entry.assert_called_once()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user