diff --git a/homeassistant/components/homewizard/__init__.py b/homeassistant/components/homewizard/__init__.py index acc78d0d380..5c41e0e2925 100644 --- a/homeassistant/components/homewizard/__init__.py +++ b/homeassistant/components/homewizard/__init__.py @@ -1,11 +1,10 @@ """The Homewizard integration.""" import logging -from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_REAUTH, ConfigEntry +from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntry from homeassistant.const import CONF_IP_ADDRESS from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady -from homeassistant.helpers import entity_registry as er from .const import DOMAIN, PLATFORMS from .coordinator import HWEnergyDeviceUpdateCoordinator as Coordinator @@ -15,55 +14,6 @@ _LOGGER = logging.getLogger(__name__) async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Homewizard from a config entry.""" - - _LOGGER.debug("__init__ async_setup_entry") - - # Migrate `homewizard_energy` (custom_component) to `homewizard` - if entry.source == SOURCE_IMPORT and "old_config_entry_id" in entry.data: - # Remove the old config entry ID from the entry data so we don't try this again - # on the next setup - data = entry.data.copy() - old_config_entry_id = data.pop("old_config_entry_id") - - hass.config_entries.async_update_entry(entry, data=data) - _LOGGER.debug( - ( - "Setting up imported homewizard_energy entry %s for the first time as " - "homewizard entry %s" - ), - old_config_entry_id, - entry.entry_id, - ) - - ent_reg = er.async_get(hass) - for entity in er.async_entries_for_config_entry(ent_reg, old_config_entry_id): - _LOGGER.debug("Removing %s", entity.entity_id) - ent_reg.async_remove(entity.entity_id) - - _LOGGER.debug("Re-creating %s for the new config entry", entity.entity_id) - # We will precreate the entity so that any customizations can be preserved - new_entity = ent_reg.async_get_or_create( - entity.domain, - DOMAIN, - entity.unique_id, - suggested_object_id=entity.entity_id.split(".")[1], - disabled_by=entity.disabled_by, - config_entry=entry, - original_name=entity.original_name, - original_icon=entity.original_icon, - ) - _LOGGER.debug("Re-created %s", new_entity.entity_id) - - # If there are customizations on the old entity, apply them to the new one - if entity.name or entity.icon: - ent_reg.async_update_entity( - new_entity.entity_id, name=entity.name, icon=entity.icon - ) - - # Remove the old config entry and now the entry is fully migrated - hass.async_create_task(hass.config_entries.async_remove(old_config_entry_id)) - - # Create coordinator coordinator = Coordinator(hass, entry, entry.data[CONF_IP_ADDRESS]) try: await coordinator.async_config_entry_first_refresh() diff --git a/tests/components/homewizard/test_init.py b/tests/components/homewizard/test_init.py index dea2972d79f..5e494e42154 100644 --- a/tests/components/homewizard/test_init.py +++ b/tests/components/homewizard/test_init.py @@ -4,11 +4,9 @@ from unittest.mock import patch from homewizard_energy.errors import DisabledError, HomeWizardEnergyException -from homeassistant import config_entries from homeassistant.components.homewizard.const import DOMAIN from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntryState from homeassistant.const import CONF_IP_ADDRESS -from homeassistant.helpers import entity_registry as er from .generator import get_mock_device @@ -70,97 +68,6 @@ async def test_load_failed_host_unavailable(aioclient_mock, hass): assert entry.state is ConfigEntryState.SETUP_RETRY -async def test_init_accepts_and_migrates_old_entry(aioclient_mock, hass): - """Test config flow accepts imported configuration.""" - - device = get_mock_device() - - # Add original entry - original_entry = MockConfigEntry( - domain="homewizard_energy", - data={CONF_IP_ADDRESS: "1.2.3.4"}, - entry_id="old_id", - ) - original_entry.add_to_hass(hass) - - # Give it some entities to see of they migrate properly - ent_reg = er.async_get(hass) - old_entity_active_power = ent_reg.async_get_or_create( - "sensor", - "homewizard_energy", - "p1_active_power_unique_id", - config_entry=original_entry, - original_name="Active Power", - suggested_object_id="p1_active_power", - ) - old_entity_switch = ent_reg.async_get_or_create( - "switch", - "homewizard_energy", - "socket_switch_unique_id", - config_entry=original_entry, - original_name="Switch", - suggested_object_id="socket_switch", - ) - old_entity_disabled_sensor = ent_reg.async_get_or_create( - "sensor", - "homewizard_energy", - "socket_disabled_unique_id", - config_entry=original_entry, - original_name="Switch Disabled", - suggested_object_id="socket_disabled", - disabled_by=er.RegistryEntryDisabler.USER, - ) - # Update some user-customs - ent_reg.async_update_entity(old_entity_active_power.entity_id, name="new_name") - ent_reg.async_update_entity(old_entity_switch.entity_id, icon="new_icon") - - imported_entry = MockConfigEntry( - domain=DOMAIN, - data={CONF_IP_ADDRESS: "1.2.3.4", "old_config_entry_id": "old_id"}, - source=config_entries.SOURCE_IMPORT, - entry_id="new_id", - ) - imported_entry.add_to_hass(hass) - - assert imported_entry.domain == DOMAIN - assert imported_entry.domain != original_entry.domain - - # Add the entry_id to trigger migration - with patch( - "homeassistant.components.homewizard.coordinator.HomeWizardEnergy", - return_value=device, - ): - await hass.config_entries.async_setup(imported_entry.entry_id) - await hass.async_block_till_done() - - assert original_entry.state is ConfigEntryState.NOT_LOADED - assert imported_entry.state is ConfigEntryState.LOADED - - # Check if new entities are migrated - new_entity_active_power = ent_reg.async_get(old_entity_active_power.entity_id) - assert new_entity_active_power.platform == DOMAIN - assert new_entity_active_power.name == "new_name" - assert new_entity_active_power.icon is None - assert new_entity_active_power.original_name == "Active Power" - assert new_entity_active_power.unique_id == "p1_active_power_unique_id" - assert new_entity_active_power.disabled_by is None - - new_entity_switch = ent_reg.async_get(old_entity_switch.entity_id) - assert new_entity_switch.platform == DOMAIN - assert new_entity_switch.name is None - assert new_entity_switch.icon == "new_icon" - assert new_entity_switch.original_name == "Switch" - assert new_entity_switch.unique_id == "socket_switch_unique_id" - assert new_entity_switch.disabled_by is None - - new_entity_disabled_sensor = ent_reg.async_get(old_entity_disabled_sensor.entity_id) - assert new_entity_disabled_sensor.platform == DOMAIN - assert new_entity_disabled_sensor.name is None - assert new_entity_disabled_sensor.original_name == "Switch Disabled" - assert new_entity_disabled_sensor.unique_id == "socket_disabled_unique_id" - assert new_entity_disabled_sensor.disabled_by == er.RegistryEntryDisabler.USER - - async def test_load_detect_api_disabled(aioclient_mock, hass): """Test setup detects disabled API."""