From 5620cfbfd803ad80c2308a7d4e9404d7d8bd242c Mon Sep 17 00:00:00 2001 From: Andres Ruiz Date: Thu, 26 Mar 2026 12:16:38 -0400 Subject: [PATCH] Add support for unloading the waterfurnace config (#166555) --- .../components/waterfurnace/__init__.py | 7 ++++ .../waterfurnace/quality_scale.yaml | 2 +- tests/components/waterfurnace/test_init.py | 33 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/waterfurnace/__init__.py b/homeassistant/components/waterfurnace/__init__.py index aa79ae7efe2..066fbc530af 100644 --- a/homeassistant/components/waterfurnace/__init__.py +++ b/homeassistant/components/waterfurnace/__init__.py @@ -138,6 +138,13 @@ async def async_setup_entry( return True +async def async_unload_entry( + hass: HomeAssistant, entry: WaterFurnaceConfigEntry +) -> bool: + """Unload a WaterFurnace config entry.""" + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) + + async def async_migrate_entry( hass: HomeAssistant, entry: WaterFurnaceConfigEntry ) -> bool: diff --git a/homeassistant/components/waterfurnace/quality_scale.yaml b/homeassistant/components/waterfurnace/quality_scale.yaml index 814828dabe3..cbf85a7ab59 100644 --- a/homeassistant/components/waterfurnace/quality_scale.yaml +++ b/homeassistant/components/waterfurnace/quality_scale.yaml @@ -29,7 +29,7 @@ rules: action-exceptions: status: exempt comment: This integration does not have custom service actions. - config-entry-unloading: todo + config-entry-unloading: done docs-configuration-parameters: done docs-installation-parameters: done entity-unavailable: done diff --git a/tests/components/waterfurnace/test_init.py b/tests/components/waterfurnace/test_init.py index b8d01bb6d7e..ba686caf16e 100644 --- a/tests/components/waterfurnace/test_init.py +++ b/tests/components/waterfurnace/test_init.py @@ -2,6 +2,7 @@ from unittest.mock import Mock +import pytest from waterfurnace.waterfurnace import WFCredentialError from homeassistant.components.waterfurnace.const import DOMAIN @@ -99,3 +100,35 @@ async def test_migrate_unique_id_auth_failure( assert old_entry.state is ConfigEntryState.MIGRATION_ERROR assert old_entry.unique_id == "TEST_GWID_12345" + + +@pytest.mark.usefixtures("init_integration") +async def test_unload_entry( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, +) -> None: + """Test unloading a config entry.""" + assert mock_config_entry.state is ConfigEntryState.LOADED + + await hass.config_entries.async_unload(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.NOT_LOADED + + +@pytest.mark.usefixtures("init_integration") +async def test_reload_entry( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_waterfurnace_client: Mock, +) -> None: + """Test reloading a config entry.""" + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_waterfurnace_client.login.call_count == 2 + + await hass.config_entries.async_reload(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state is ConfigEntryState.LOADED + assert mock_waterfurnace_client.login.call_count == 4 + assert "TEST_GWID_12345" in mock_config_entry.runtime_data