diff --git a/homeassistant/components/telegram/__init__.py b/homeassistant/components/telegram/__init__.py index 1aca4e510c6427..43a639cb2c37f8 100644 --- a/homeassistant/components/telegram/__init__.py +++ b/homeassistant/components/telegram/__init__.py @@ -1 +1,4 @@ """The telegram component.""" + +DOMAIN = "telegram" +PLATFORMS = ["notify"] diff --git a/homeassistant/components/telegram/notify.py b/homeassistant/components/telegram/notify.py index 673935d8283d86..c0f3f624af95b7 100644 --- a/homeassistant/components/telegram/notify.py +++ b/homeassistant/components/telegram/notify.py @@ -12,6 +12,9 @@ BaseNotificationService, ) from homeassistant.const import ATTR_LOCATION +from homeassistant.helpers.reload import setup_reload_service + +from . import DOMAIN as TELEGRAM_DOMAIN, PLATFORMS _LOGGER = logging.getLogger(__name__) @@ -29,6 +32,8 @@ def get_service(hass, config, discovery_info=None): """Get the Telegram notification service.""" + + setup_reload_service(hass, TELEGRAM_DOMAIN, PLATFORMS) chat_id = config.get(CONF_CHAT_ID) return TelegramNotificationService(hass, chat_id) diff --git a/homeassistant/components/telegram/services.yaml b/homeassistant/components/telegram/services.yaml index e69de29bb2d1d6..c467de06fe5fa7 100644 --- a/homeassistant/components/telegram/services.yaml +++ b/homeassistant/components/telegram/services.yaml @@ -0,0 +1,2 @@ +reload: + description: Reload telegram notify services. diff --git a/tests/components/telegram/__init__.py b/tests/components/telegram/__init__.py new file mode 100644 index 00000000000000..feff68fd53ab98 --- /dev/null +++ b/tests/components/telegram/__init__.py @@ -0,0 +1 @@ +"""Tests for telegram component.""" diff --git a/tests/components/telegram/test_notify.py b/tests/components/telegram/test_notify.py new file mode 100644 index 00000000000000..7488db49d9ea58 --- /dev/null +++ b/tests/components/telegram/test_notify.py @@ -0,0 +1,53 @@ +"""The tests for the telegram.notify platform.""" +from os import path + +from homeassistant import config as hass_config +import homeassistant.components.notify as notify +from homeassistant.components.telegram import DOMAIN +from homeassistant.const import SERVICE_RELOAD +from homeassistant.setup import async_setup_component + +from tests.async_mock import patch + + +async def test_reload_notify(hass): + """Verify we can reload the notify service.""" + + with patch("homeassistant.components.telegram_bot.async_setup", return_value=True): + assert await async_setup_component( + hass, + notify.DOMAIN, + { + notify.DOMAIN: [ + { + "name": DOMAIN, + "platform": DOMAIN, + "chat_id": 1, + }, + ] + }, + ) + await hass.async_block_till_done() + + assert hass.services.has_service(notify.DOMAIN, DOMAIN) + + yaml_path = path.join( + _get_fixtures_base_path(), + "fixtures", + "telegram/configuration.yaml", + ) + with patch.object(hass_config, "YAML_CONFIG_FILE", yaml_path): + await hass.services.async_call( + DOMAIN, + SERVICE_RELOAD, + {}, + blocking=True, + ) + await hass.async_block_till_done() + + assert not hass.services.has_service(notify.DOMAIN, DOMAIN) + assert hass.services.has_service(notify.DOMAIN, "telegram_reloaded") + + +def _get_fixtures_base_path(): + return path.dirname(path.dirname(path.dirname(__file__))) diff --git a/tests/fixtures/telegram/configuration.yaml b/tests/fixtures/telegram/configuration.yaml new file mode 100644 index 00000000000000..ab50b4df5eef15 --- /dev/null +++ b/tests/fixtures/telegram/configuration.yaml @@ -0,0 +1,4 @@ +notify: + - name: telegram_reloaded + platform: telegram + chat_id: 2