Migrate Nexia unique id to str (#126911)

This commit is contained in:
Joost Lekkerkerker 2024-09-27 14:35:08 +02:00 committed by GitHub
parent 9f2ba6bc2c
commit 308f25fe4c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 45 additions and 2 deletions

View file

@ -86,3 +86,21 @@ async def async_remove_config_entry_device(
if zone_id in dev_ids:
return False
return True
async def async_migrate_entry(hass: HomeAssistant, entry: NexiaConfigEntry) -> bool:
"""Migrate entry."""
_LOGGER.debug("Migrating from version %s", entry.version)
if entry.version == 1:
# 1 -> 2: Unique ID from integer to string
if entry.minor_version == 1:
minor_version = 2
hass.config_entries.async_update_entry(
entry, unique_id=str(entry.unique_id), minor_version=minor_version
)
_LOGGER.debug("Migration successful")
return True

View file

@ -81,6 +81,7 @@ class NexiaConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Nexia."""
VERSION = 1
MINOR_VERSION = 2
async def async_step_user(
self, user_input: dict[str, Any] | None = None
@ -99,7 +100,7 @@ class NexiaConfigFlow(ConfigFlow, domain=DOMAIN):
errors["base"] = "unknown"
if "base" not in errors:
await self.async_set_unique_id(info["house_id"])
await self.async_set_unique_id(str(info["house_id"]))
self._abort_if_unique_id_configured()
return self.async_create_entry(title=info["title"], data=user_input)

View file

@ -1,15 +1,19 @@
"""The init tests for the nexia platform."""
from unittest.mock import patch
import aiohttp
from homeassistant.components.nexia.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.setup import async_setup_component
from .util import async_init_integration
from tests.common import MockConfigEntry
from tests.typing import WebSocketGenerator
@ -48,3 +52,20 @@ async def test_device_remove_devices(
)
response = await client.remove_device(dead_device_entry.id, entry_id)
assert response["success"]
async def test_migrate_entry_minor_version_1_2(hass: HomeAssistant) -> None:
"""Test migrating a 1.1 config entry to 1.2."""
with patch("homeassistant.components.nexia.async_setup_entry", return_value=True):
entry = MockConfigEntry(
domain=DOMAIN,
data={CONF_USERNAME: "mock", CONF_PASSWORD: "mock"},
version=1,
minor_version=1,
unique_id=123456,
)
entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id)
assert entry.version == 1
assert entry.minor_version == 2
assert entry.unique_id == "123456"

View file

@ -54,7 +54,10 @@ async def async_init_integration(
text=load_fixture(set_fan_speed_fixture),
)
entry = MockConfigEntry(
domain=DOMAIN, data={CONF_USERNAME: "mock", CONF_PASSWORD: "mock"}
domain=DOMAIN,
data={CONF_USERNAME: "mock", CONF_PASSWORD: "mock"},
minor_version=2,
unique_id="123456",
)
entry.add_to_hass(hass)