diff --git a/homeassistant/components/lovelace/__init__.py b/homeassistant/components/lovelace/__init__.py index e6f122bce19..c3254d84a73 100644 --- a/homeassistant/components/lovelace/__init__.py +++ b/homeassistant/components/lovelace/__init__.py @@ -101,6 +101,8 @@ class LovelaceStorage: async def async_save(self, config): """Save config.""" + if self._data is None: + self._data = {'config': None} self._data['config'] = config await self._store.async_save(self._data) diff --git a/tests/components/lovelace/test_init.py b/tests/components/lovelace/test_init.py index 15548b28cfb..20490f8c0cd 100644 --- a/tests/components/lovelace/test_init.py +++ b/tests/components/lovelace/test_init.py @@ -50,6 +50,27 @@ async def test_lovelace_from_storage(hass, hass_ws_client, hass_storage): } +async def test_lovelace_from_storage_save_before_load(hass, hass_ws_client, + hass_storage): + """Test we can load lovelace config from storage.""" + assert await async_setup_component(hass, 'lovelace', {}) + client = await hass_ws_client(hass) + + # Store new config + await client.send_json({ + 'id': 6, + 'type': 'lovelace/config/save', + 'config': { + 'yo': 'hello' + } + }) + response = await client.receive_json() + assert response['success'] + assert hass_storage[lovelace.STORAGE_KEY]['data'] == { + 'config': {'yo': 'hello'} + } + + async def test_lovelace_from_yaml(hass, hass_ws_client): """Test we load lovelace config from yaml.""" assert await async_setup_component(hass, 'lovelace', {