From 7d6595f755fe4232df60822806a756694ac26a80 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Sun, 2 Jul 2023 19:42:39 -0700 Subject: [PATCH] Delete the local calendar store when removing the config entry (#95599) * Delete calendar store when removing the config entry * Unlink file on remove with tests --- .../components/local_calendar/__init__.py | 11 +++++++++++ tests/components/local_calendar/test_init.py | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 tests/components/local_calendar/test_init.py diff --git a/homeassistant/components/local_calendar/__init__.py b/homeassistant/components/local_calendar/__init__.py index 33ad67cc81a..7c1d2f09b04 100644 --- a/homeassistant/components/local_calendar/__init__.py +++ b/homeassistant/components/local_calendar/__init__.py @@ -39,3 +39,14 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.data[DOMAIN].pop(entry.entry_id) return unload_ok + + +async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: + """Handle removal of an entry.""" + key = slugify(entry.data[CONF_CALENDAR_NAME]) + path = Path(hass.config.path(STORAGE_PATH.format(key=key))) + + def unlink(path: Path) -> None: + path.unlink(missing_ok=True) + + await hass.async_add_executor_job(unlink, path) diff --git a/tests/components/local_calendar/test_init.py b/tests/components/local_calendar/test_init.py new file mode 100644 index 00000000000..e5ca209e8a6 --- /dev/null +++ b/tests/components/local_calendar/test_init.py @@ -0,0 +1,18 @@ +"""Tests for init platform of local calendar.""" + +from unittest.mock import patch + +from homeassistant.core import HomeAssistant + +from tests.common import MockConfigEntry + + +async def test_remove_config_entry( + hass: HomeAssistant, setup_integration: None, config_entry: MockConfigEntry +) -> None: + """Test removing a config entry.""" + + with patch("homeassistant.components.local_calendar.Path.unlink") as unlink_mock: + assert await hass.config_entries.async_remove(config_entry.entry_id) + await hass.async_block_till_done() + unlink_mock.assert_called_once()