diff --git a/homeassistant/components/aemet/__init__.py b/homeassistant/components/aemet/__init__.py index 9ec52faec00..79dc3cc55ce 100644 --- a/homeassistant/components/aemet/__init__.py +++ b/homeassistant/components/aemet/__init__.py @@ -1,6 +1,7 @@ """The AEMET OpenData component.""" import logging +import shutil from aemet_opendata.exceptions import AemetError, TownNotFound from aemet_opendata.interface import AEMET, ConnectionOptions, UpdateFeature @@ -10,8 +11,9 @@ from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CON from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers import aiohttp_client +from homeassistant.helpers.storage import STORAGE_DIR -from .const import CONF_STATION_UPDATES, PLATFORMS +from .const import CONF_STATION_UPDATES, DOMAIN, PLATFORMS from .coordinator import AemetConfigEntry, AemetData, WeatherUpdateCoordinator _LOGGER = logging.getLogger(__name__) @@ -29,6 +31,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: AemetConfigEntry) -> boo options = ConnectionOptions(api_key, update_features) aemet = AEMET(aiohttp_client.async_get_clientsession(hass), options) + aemet.set_api_data_dir(hass.config.path(STORAGE_DIR, f"{DOMAIN}-{entry.unique_id}")) + try: await aemet.select_coordinates(latitude, longitude) except TownNotFound as err: @@ -57,3 +61,11 @@ async def async_update_options(hass: HomeAssistant, entry: ConfigEntry) -> None: async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Unload a config entry.""" return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) + + +async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: + """Remove a config entry.""" + await hass.async_add_executor_job( + shutil.rmtree, + hass.config.path(STORAGE_DIR, f"{DOMAIN}-{entry.unique_id}"), + ) diff --git a/tests/components/aemet/test_init.py b/tests/components/aemet/test_init.py index cf3204782cd..d6229438582 100644 --- a/tests/components/aemet/test_init.py +++ b/tests/components/aemet/test_init.py @@ -9,6 +9,7 @@ from homeassistant.components.aemet.const import DOMAIN from homeassistant.config_entries import ConfigEntryState from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME from homeassistant.core import HomeAssistant +from homeassistant.helpers import entity_registry as er from .util import mock_api_call @@ -24,6 +25,7 @@ CONFIG = { async def test_unload_entry( hass: HomeAssistant, + entity_registry: er.EntityRegistry, freezer: FrozenDateTimeFactory, ) -> None: """Test (un)loading the AEMET integration.""" @@ -47,6 +49,12 @@ async def test_unload_entry( await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.NOT_LOADED + assert await hass.config_entries.async_remove(config_entry.entry_id) + await hass.async_block_till_done() + + assert hass.states.get("weather.aemet") is None + assert entity_registry.async_get("weather.aemet") is None + async def test_init_town_not_found( hass: HomeAssistant,