From 52fb6149dc4cd98cdaebec92c26d70cef84b7c3d Mon Sep 17 00:00:00 2001 From: andrey-git Date: Thu, 30 Nov 2017 21:16:00 +0200 Subject: [PATCH] Reload groups after saving a change via config API --- homeassistant/components/config/group.py | 12 +++++++++--- tests/components/config/test_group.py | 10 +++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/config/group.py b/homeassistant/components/config/group.py index 16e1900c64587a..8b327faa95f387 100644 --- a/homeassistant/components/config/group.py +++ b/homeassistant/components/config/group.py @@ -1,8 +1,8 @@ """Provide configuration end points for Groups.""" import asyncio - +from homeassistant.const import SERVICE_RELOAD from homeassistant.components.config import EditKeyBasedConfigView -from homeassistant.components.group import GROUP_SCHEMA +from homeassistant.components.group import DOMAIN, GROUP_SCHEMA import homeassistant.helpers.config_validation as cv @@ -12,7 +12,13 @@ @asyncio.coroutine def async_setup(hass): """Set up the Group config API.""" + @asyncio.coroutine + def hook(hass): + """post_write_hook for Config View that reloads groups.""" + yield from hass.services.async_call(DOMAIN, SERVICE_RELOAD) + hass.http.register_view(EditKeyBasedConfigView( - 'group', 'config', CONFIG_PATH, cv.slug, GROUP_SCHEMA + 'group', 'config', CONFIG_PATH, cv.slug, GROUP_SCHEMA, + post_write_hook=hook )) return True diff --git a/tests/components/config/test_group.py b/tests/components/config/test_group.py index 6cc6d67811ef1b..ad28b6eb9b8417 100644 --- a/tests/components/config/test_group.py +++ b/tests/components/config/test_group.py @@ -1,7 +1,7 @@ -"""Test Z-Wave config panel.""" +"""Test Group config panel.""" import asyncio import json -from unittest.mock import patch +from unittest.mock import patch, MagicMock from homeassistant.bootstrap import async_setup_component from homeassistant.components import config @@ -66,8 +66,11 @@ def mock_write(path, data): """Mock writing data.""" written.append(data) + mock_call = MagicMock() + with patch('homeassistant.components.config._read', mock_read), \ - patch('homeassistant.components.config._write', mock_write): + patch('homeassistant.components.config._write', mock_write), \ + patch.object(hass.services, 'async_call', mock_call): resp = yield from client.post( '/api/config/group/config/hello_beer', data=json.dumps({ 'name': 'Beer', @@ -82,6 +85,7 @@ def mock_write(path, data): orig_data['hello_beer']['entities'] = ['light.top', 'light.bottom'] assert written[0] == orig_data + mock_call.assert_called_once_with('group', 'reload') @asyncio.coroutine