diff --git a/homeassistant/components/fronius/__init__.py b/homeassistant/components/fronius/__init__.py index c05f18107a04..d0e13aa79143 100644 --- a/homeassistant/components/fronius/__init__.py +++ b/homeassistant/components/fronius/__init__.py @@ -65,6 +65,13 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return unload_ok +async def async_remove_config_entry_device( + hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry +) -> bool: + """Remove a config entry from a device.""" + return True + + class FroniusSolarNet: """The FroniusSolarNet class routes received values to sensor entities.""" diff --git a/tests/components/fronius/__init__.py b/tests/components/fronius/__init__.py index 1255ba793880..2e053f7ccc5b 100644 --- a/tests/components/fronius/__init__.py +++ b/tests/components/fronius/__init__.py @@ -125,3 +125,17 @@ async def enable_all_entities(hass, freezer, config_entry_id, time_till_next_upd freezer.tick(time_till_next_update) async_fire_time_changed(hass) await hass.async_block_till_done() + + +async def remove_device(ws_client, device_id, config_entry_id): + """Remove config entry from a device.""" + await ws_client.send_json( + { + "id": 5, + "type": "config/device_registry/remove_config_entry", + "config_entry_id": config_entry_id, + "device_id": device_id, + } + ) + response = await ws_client.receive_json() + return response["success"] diff --git a/tests/components/fronius/test_init.py b/tests/components/fronius/test_init.py index cc56fea24b28..f8d86bac26ac 100644 --- a/tests/components/fronius/test_init.py +++ b/tests/components/fronius/test_init.py @@ -7,13 +7,15 @@ from pyfronius import FroniusError from homeassistant.components.fronius.const import DOMAIN, SOLAR_NET_RESCAN_TIMER from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant -from homeassistant.helpers import device_registry as dr +from homeassistant.helpers import device_registry as dr, entity_registry as er +from homeassistant.setup import async_setup_component from homeassistant.util import dt as dt_util -from . import mock_responses, setup_fronius_integration +from . import mock_responses, remove_device, setup_fronius_integration from tests.common import async_fire_time_changed from tests.test_util.aiohttp import AiohttpClientMocker +from tests.typing import WebSocketGenerator async def test_unload_config_entry( @@ -138,3 +140,29 @@ async def test_inverter_rescan_interruption( len(dr.async_entries_for_config_entry(device_registry, config_entry.entry_id)) == 2 ) + + +async def test_device_remove_devices( + hass: HomeAssistant, + aioclient_mock: AiohttpClientMocker, + device_registry: dr.DeviceRegistry, + entity_registry: er.EntityRegistry, + hass_ws_client: WebSocketGenerator, +) -> None: + """Test we can remove a device.""" + assert await async_setup_component(hass, "config", {}) + + mock_responses(aioclient_mock, fixture_set="gen24_storage") + config_entry = await setup_fronius_integration( + hass, is_logger=False, unique_id="12345678" + ) + + inverter_1 = device_registry.async_get_device(identifiers={(DOMAIN, "12345678")}) + assert ( + await remove_device( + await hass_ws_client(hass), inverter_1.id, config_entry.entry_id + ) + is True + ) + + assert not device_registry.async_get_device(identifiers={(DOMAIN, "12345678")}) diff --git a/tests/components/fronius/test_sensor.py b/tests/components/fronius/test_sensor.py index 684e9a3ae5f4..a8f48ce2e880 100644 --- a/tests/components/fronius/test_sensor.py +++ b/tests/components/fronius/test_sensor.py @@ -370,6 +370,7 @@ async def test_gen24( async def test_gen24_storage( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, + device_registry: dr.DeviceRegistry, freezer: FrozenDateTimeFactory, ) -> None: """Test Fronius Gen24 inverter with BYD battery and Ohmpilot entities.""" @@ -465,8 +466,6 @@ async def test_gen24_storage( assert_state("sensor.byd_battery_box_premium_hv_dc_voltage", 0.0) # Devices - device_registry = dr.async_get(hass) - solar_net = device_registry.async_get_device( identifiers={(DOMAIN, "solar_net_12345678")} ) @@ -501,6 +500,7 @@ async def test_gen24_storage( async def test_primo_s0( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, + device_registry: dr.DeviceRegistry, freezer: FrozenDateTimeFactory, ) -> None: """Test Fronius Primo dual inverter with S0 meter entities.""" @@ -573,8 +573,6 @@ async def test_primo_s0( assert_state("sensor.solarnet_energy_year", 11128933.25) # Devices - device_registry = dr.async_get(hass) - solar_net = device_registry.async_get_device( identifiers={(DOMAIN, "solar_net_123.4567890")} )