Cleanups in entity registry tests (#110788)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
926a634ebf
commit
aa8d8402b4
2 changed files with 109 additions and 107 deletions
|
@ -19,7 +19,6 @@ from tests.common import (
|
||||||
MockConfigEntry,
|
MockConfigEntry,
|
||||||
MockEntity,
|
MockEntity,
|
||||||
MockEntityPlatform,
|
MockEntityPlatform,
|
||||||
mock_device_registry,
|
|
||||||
mock_registry,
|
mock_registry,
|
||||||
)
|
)
|
||||||
from tests.typing import MockHAClientWebSocket, WebSocketGenerator
|
from tests.typing import MockHAClientWebSocket, WebSocketGenerator
|
||||||
|
@ -34,13 +33,9 @@ async def client(
|
||||||
return await hass_ws_client(hass)
|
return await hass_ws_client(hass)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
async def test_list_entities(
|
||||||
def device_registry(hass):
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
"""Return an empty, loaded, registry."""
|
) -> None:
|
||||||
return mock_device_registry(hass)
|
|
||||||
|
|
||||||
|
|
||||||
async def test_list_entities(hass: HomeAssistant, client) -> None:
|
|
||||||
"""Test list entries."""
|
"""Test list entries."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -59,7 +54,7 @@ async def test_list_entities(hass: HomeAssistant, client) -> None:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
await client.send_json({"id": 5, "type": "config/entity_registry/list"})
|
await client.send_json_auto_id({"type": "config/entity_registry/list"})
|
||||||
msg = await client.receive_json()
|
msg = await client.receive_json()
|
||||||
|
|
||||||
assert msg["result"] == [
|
assert msg["result"] == [
|
||||||
|
@ -122,7 +117,7 @@ async def test_list_entities(hass: HomeAssistant, client) -> None:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
await client.send_json({"id": 6, "type": "config/entity_registry/list"})
|
await client.send_json_auto_id({"type": "config/entity_registry/list"})
|
||||||
msg = await client.receive_json()
|
msg = await client.receive_json()
|
||||||
|
|
||||||
assert msg["result"] == [
|
assert msg["result"] == [
|
||||||
|
@ -314,7 +309,7 @@ async def test_list_entities_for_display(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_get_entity(hass: HomeAssistant, client) -> None:
|
async def test_get_entity(hass: HomeAssistant, client: MockHAClientWebSocket) -> None:
|
||||||
"""Test get entry."""
|
"""Test get entry."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -333,8 +328,8 @@ async def test_get_entity(hass: HomeAssistant, client) -> None:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{"id": 5, "type": "config/entity_registry/get", "entity_id": "test_domain.name"}
|
{"type": "config/entity_registry/get", "entity_id": "test_domain.name"}
|
||||||
)
|
)
|
||||||
msg = await client.receive_json()
|
msg = await client.receive_json()
|
||||||
|
|
||||||
|
@ -362,9 +357,8 @@ async def test_get_entity(hass: HomeAssistant, client) -> None:
|
||||||
"unique_id": "1234",
|
"unique_id": "1234",
|
||||||
}
|
}
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/get",
|
"type": "config/entity_registry/get",
|
||||||
"entity_id": "test_domain.no_name",
|
"entity_id": "test_domain.no_name",
|
||||||
}
|
}
|
||||||
|
@ -396,7 +390,7 @@ async def test_get_entity(hass: HomeAssistant, client) -> None:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_get_entities(hass: HomeAssistant, client) -> None:
|
async def test_get_entities(hass: HomeAssistant, client: MockHAClientWebSocket) -> None:
|
||||||
"""Test get entry."""
|
"""Test get entry."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -415,9 +409,8 @@ async def test_get_entities(hass: HomeAssistant, client) -> None:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 5,
|
|
||||||
"type": "config/entity_registry/get_entries",
|
"type": "config/entity_registry/get_entries",
|
||||||
"entity_ids": [
|
"entity_ids": [
|
||||||
"test_domain.name",
|
"test_domain.name",
|
||||||
|
@ -479,7 +472,9 @@ async def test_get_entities(hass: HomeAssistant, client) -> None:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_update_entity(hass: HomeAssistant, client) -> None:
|
async def test_update_entity(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test updating entity."""
|
"""Test updating entity."""
|
||||||
registry = mock_registry(
|
registry = mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -504,9 +499,8 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
assert state.attributes[ATTR_ICON] == "icon:before update"
|
assert state.attributes[ATTR_ICON] == "icon:before update"
|
||||||
|
|
||||||
# UPDATE AREA, DEVICE_CLASS, HIDDEN_BY, ICON AND NAME
|
# UPDATE AREA, DEVICE_CLASS, HIDDEN_BY, ICON AND NAME
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"aliases": ["alias_1", "alias_2"],
|
"aliases": ["alias_1", "alias_2"],
|
||||||
|
@ -551,9 +545,8 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
assert state.attributes[ATTR_ICON] == "icon:after update"
|
assert state.attributes[ATTR_ICON] == "icon:after update"
|
||||||
|
|
||||||
# UPDATE HIDDEN_BY TO ILLEGAL VALUE
|
# UPDATE HIDDEN_BY TO ILLEGAL VALUE
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 7,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"hidden_by": "ivy",
|
"hidden_by": "ivy",
|
||||||
|
@ -566,9 +559,8 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
assert registry.entities["test_domain.world"].hidden_by is RegistryEntryHider.USER
|
assert registry.entities["test_domain.world"].hidden_by is RegistryEntryHider.USER
|
||||||
|
|
||||||
# UPDATE DISABLED_BY TO USER
|
# UPDATE DISABLED_BY TO USER
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 8,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"disabled_by": "user", # We exchange strings over the WS API, not enums
|
"disabled_by": "user", # We exchange strings over the WS API, not enums
|
||||||
|
@ -584,9 +576,8 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
# UPDATE DISABLED_BY TO NONE
|
# UPDATE DISABLED_BY TO NONE
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 9,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"disabled_by": None,
|
"disabled_by": None,
|
||||||
|
@ -623,9 +614,8 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
}
|
}
|
||||||
|
|
||||||
# UPDATE ENTITY OPTION
|
# UPDATE ENTITY OPTION
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 10,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"options_domain": "sensor",
|
"options_domain": "sensor",
|
||||||
|
@ -662,7 +652,9 @@ async def test_update_entity(hass: HomeAssistant, client) -> None:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_update_entity_require_restart(hass: HomeAssistant, client) -> None:
|
async def test_update_entity_require_restart(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test updating entity."""
|
"""Test updating entity."""
|
||||||
entity_id = "test_domain.test_platform_1234"
|
entity_id = "test_domain.test_platform_1234"
|
||||||
config_entry = MockConfigEntry(domain="test_platform")
|
config_entry = MockConfigEntry(domain="test_platform")
|
||||||
|
@ -676,9 +668,8 @@ async def test_update_entity_require_restart(hass: HomeAssistant, client) -> Non
|
||||||
assert state is not None
|
assert state is not None
|
||||||
|
|
||||||
# UPDATE DISABLED_BY TO NONE
|
# UPDATE DISABLED_BY TO NONE
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 8,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": entity_id,
|
"entity_id": entity_id,
|
||||||
"disabled_by": None,
|
"disabled_by": None,
|
||||||
|
@ -716,7 +707,9 @@ async def test_update_entity_require_restart(hass: HomeAssistant, client) -> Non
|
||||||
|
|
||||||
|
|
||||||
async def test_enable_entity_disabled_device(
|
async def test_enable_entity_disabled_device(
|
||||||
hass: HomeAssistant, client, device_registry: dr.DeviceRegistry
|
hass: HomeAssistant,
|
||||||
|
client: MockHAClientWebSocket,
|
||||||
|
device_registry: dr.DeviceRegistry,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test enabling entity of disabled device."""
|
"""Test enabling entity of disabled device."""
|
||||||
entity_id = "test_domain.test_platform_1234"
|
entity_id = "test_domain.test_platform_1234"
|
||||||
|
@ -750,9 +743,8 @@ async def test_enable_entity_disabled_device(
|
||||||
assert entity_entry.disabled_by == RegistryEntryDisabler.DEVICE
|
assert entity_entry.disabled_by == RegistryEntryDisabler.DEVICE
|
||||||
|
|
||||||
# UPDATE DISABLED_BY TO NONE
|
# UPDATE DISABLED_BY TO NONE
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 8,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": entity_id,
|
"entity_id": entity_id,
|
||||||
"disabled_by": None,
|
"disabled_by": None,
|
||||||
|
@ -764,7 +756,9 @@ async def test_enable_entity_disabled_device(
|
||||||
assert not msg["success"]
|
assert not msg["success"]
|
||||||
|
|
||||||
|
|
||||||
async def test_update_entity_no_changes(hass: HomeAssistant, client) -> None:
|
async def test_update_entity_no_changes(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test update entity with no changes."""
|
"""Test update entity with no changes."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -786,9 +780,8 @@ async def test_update_entity_no_changes(hass: HomeAssistant, client) -> None:
|
||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.name == "name of entity"
|
assert state.name == "name of entity"
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"name": "name of entity",
|
"name": "name of entity",
|
||||||
|
@ -827,11 +820,10 @@ async def test_update_entity_no_changes(hass: HomeAssistant, client) -> None:
|
||||||
assert state.name == "name of entity"
|
assert state.name == "name of entity"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_nonexisting_entity(client) -> None:
|
async def test_get_nonexisting_entity(client: MockHAClientWebSocket) -> None:
|
||||||
"""Test get entry with nonexisting entity."""
|
"""Test get entry with nonexisting entity."""
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/get",
|
"type": "config/entity_registry/get",
|
||||||
"entity_id": "test_domain.no_name",
|
"entity_id": "test_domain.no_name",
|
||||||
}
|
}
|
||||||
|
@ -841,11 +833,10 @@ async def test_get_nonexisting_entity(client) -> None:
|
||||||
assert not msg["success"]
|
assert not msg["success"]
|
||||||
|
|
||||||
|
|
||||||
async def test_update_nonexisting_entity(client) -> None:
|
async def test_update_nonexisting_entity(client: MockHAClientWebSocket) -> None:
|
||||||
"""Test update a nonexisting entity."""
|
"""Test update a nonexisting entity."""
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.no_name",
|
"entity_id": "test_domain.no_name",
|
||||||
"name": "new-name",
|
"name": "new-name",
|
||||||
|
@ -856,7 +847,9 @@ async def test_update_nonexisting_entity(client) -> None:
|
||||||
assert not msg["success"]
|
assert not msg["success"]
|
||||||
|
|
||||||
|
|
||||||
async def test_update_entity_id(hass: HomeAssistant, client) -> None:
|
async def test_update_entity_id(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test update entity id."""
|
"""Test update entity id."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -875,9 +868,8 @@ async def test_update_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
|
|
||||||
assert hass.states.get("test_domain.world") is not None
|
assert hass.states.get("test_domain.world") is not None
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"new_entity_id": "test_domain.planet",
|
"new_entity_id": "test_domain.planet",
|
||||||
|
@ -916,7 +908,9 @@ async def test_update_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
assert hass.states.get("test_domain.planet") is not None
|
assert hass.states.get("test_domain.planet") is not None
|
||||||
|
|
||||||
|
|
||||||
async def test_update_existing_entity_id(hass: HomeAssistant, client) -> None:
|
async def test_update_existing_entity_id(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test update entity id to an already registered entity id."""
|
"""Test update entity id to an already registered entity id."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -939,9 +933,8 @@ async def test_update_existing_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
entities = [MockEntity(unique_id="1234"), MockEntity(unique_id="2345")]
|
entities = [MockEntity(unique_id="1234"), MockEntity(unique_id="2345")]
|
||||||
await platform.async_add_entities(entities)
|
await platform.async_add_entities(entities)
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"new_entity_id": "test_domain.planet",
|
"new_entity_id": "test_domain.planet",
|
||||||
|
@ -953,7 +946,9 @@ async def test_update_existing_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
assert not msg["success"]
|
assert not msg["success"]
|
||||||
|
|
||||||
|
|
||||||
async def test_update_invalid_entity_id(hass: HomeAssistant, client) -> None:
|
async def test_update_invalid_entity_id(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test update entity id to an invalid entity id."""
|
"""Test update entity id to an invalid entity id."""
|
||||||
mock_registry(
|
mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -970,9 +965,8 @@ async def test_update_invalid_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
entities = [MockEntity(unique_id="1234"), MockEntity(unique_id="2345")]
|
entities = [MockEntity(unique_id="1234"), MockEntity(unique_id="2345")]
|
||||||
await platform.async_add_entities(entities)
|
await platform.async_add_entities(entities)
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/update",
|
"type": "config/entity_registry/update",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
"new_entity_id": "another_domain.planet",
|
"new_entity_id": "another_domain.planet",
|
||||||
|
@ -984,7 +978,9 @@ async def test_update_invalid_entity_id(hass: HomeAssistant, client) -> None:
|
||||||
assert not msg["success"]
|
assert not msg["success"]
|
||||||
|
|
||||||
|
|
||||||
async def test_remove_entity(hass: HomeAssistant, client) -> None:
|
async def test_remove_entity(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test removing entity."""
|
"""Test removing entity."""
|
||||||
registry = mock_registry(
|
registry = mock_registry(
|
||||||
hass,
|
hass,
|
||||||
|
@ -999,9 +995,8 @@ async def test_remove_entity(hass: HomeAssistant, client) -> None:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/remove",
|
"type": "config/entity_registry/remove",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
}
|
}
|
||||||
|
@ -1013,13 +1008,14 @@ async def test_remove_entity(hass: HomeAssistant, client) -> None:
|
||||||
assert len(registry.entities) == 0
|
assert len(registry.entities) == 0
|
||||||
|
|
||||||
|
|
||||||
async def test_remove_non_existing_entity(hass: HomeAssistant, client) -> None:
|
async def test_remove_non_existing_entity(
|
||||||
|
hass: HomeAssistant, client: MockHAClientWebSocket
|
||||||
|
) -> None:
|
||||||
"""Test removing non existing entity."""
|
"""Test removing non existing entity."""
|
||||||
mock_registry(hass, {})
|
mock_registry(hass, {})
|
||||||
|
|
||||||
await client.send_json(
|
await client.send_json_auto_id(
|
||||||
{
|
{
|
||||||
"id": 6,
|
|
||||||
"type": "config/entity_registry/remove",
|
"type": "config/entity_registry/remove",
|
||||||
"entity_id": "test_domain.world",
|
"entity_id": "test_domain.world",
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ from typing import Any
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
@ -17,26 +18,17 @@ from homeassistant.core import CoreState, HomeAssistant, callback
|
||||||
from homeassistant.exceptions import MaxLengthExceeded
|
from homeassistant.exceptions import MaxLengthExceeded
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
|
|
||||||
from tests.common import MockConfigEntry, async_fire_time_changed, flush_store
|
from tests.common import (
|
||||||
|
MockConfigEntry,
|
||||||
|
async_capture_events,
|
||||||
|
async_fire_time_changed,
|
||||||
|
flush_store,
|
||||||
|
)
|
||||||
|
|
||||||
YAML__OPEN_PATH = "homeassistant.util.yaml.loader.open"
|
YAML__OPEN_PATH = "homeassistant.util.yaml.loader.open"
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
async def test_get(entity_registry: er.EntityRegistry):
|
||||||
def update_events(hass):
|
|
||||||
"""Capture update events."""
|
|
||||||
events = []
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def async_capture(event):
|
|
||||||
events.append(event.data)
|
|
||||||
|
|
||||||
hass.bus.async_listen(er.EVENT_ENTITY_REGISTRY_UPDATED, async_capture)
|
|
||||||
|
|
||||||
return events
|
|
||||||
|
|
||||||
|
|
||||||
async def test_get(hass: HomeAssistant, entity_registry: er.EntityRegistry):
|
|
||||||
"""Test we can get an item."""
|
"""Test we can get an item."""
|
||||||
entry = entity_registry.async_get_or_create("light", "hue", "1234")
|
entry = entity_registry.async_get_or_create("light", "hue", "1234")
|
||||||
|
|
||||||
|
@ -47,9 +39,10 @@ async def test_get(hass: HomeAssistant, entity_registry: er.EntityRegistry):
|
||||||
|
|
||||||
|
|
||||||
async def test_get_or_create_returns_same_entry(
|
async def test_get_or_create_returns_same_entry(
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry, update_events
|
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Make sure we do not duplicate entries."""
|
"""Make sure we do not duplicate entries."""
|
||||||
|
update_events = async_capture_events(hass, er.EVENT_ENTITY_REGISTRY_UPDATED)
|
||||||
entry = entity_registry.async_get_or_create("light", "hue", "1234")
|
entry = entity_registry.async_get_or_create("light", "hue", "1234")
|
||||||
entry2 = entity_registry.async_get_or_create("light", "hue", "1234")
|
entry2 = entity_registry.async_get_or_create("light", "hue", "1234")
|
||||||
|
|
||||||
|
@ -59,8 +52,10 @@ async def test_get_or_create_returns_same_entry(
|
||||||
assert entry is entry2
|
assert entry is entry2
|
||||||
assert entry.entity_id == "light.hue_1234"
|
assert entry.entity_id == "light.hue_1234"
|
||||||
assert len(update_events) == 1
|
assert len(update_events) == 1
|
||||||
assert update_events[0]["action"] == "create"
|
assert update_events[0].data == {
|
||||||
assert update_events[0]["entity_id"] == entry.entity_id
|
"action": "create",
|
||||||
|
"entity_id": entry.entity_id,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_get_or_create_suggested_object_id(entity_registry: er.EntityRegistry) -> None:
|
def test_get_or_create_suggested_object_id(entity_registry: er.EntityRegistry) -> None:
|
||||||
|
@ -449,9 +444,10 @@ def test_async_get_entity_id(entity_registry: er.EntityRegistry) -> None:
|
||||||
|
|
||||||
|
|
||||||
async def test_updating_config_entry_id(
|
async def test_updating_config_entry_id(
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry, update_events
|
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test that we update config entry id in registry."""
|
"""Test that we update config entry id in registry."""
|
||||||
|
update_events = async_capture_events(hass, er.EVENT_ENTITY_REGISTRY_UPDATED)
|
||||||
mock_config_1 = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
mock_config_1 = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
||||||
entry = entity_registry.async_get_or_create(
|
entry = entity_registry.async_get_or_create(
|
||||||
"light", "hue", "5678", config_entry=mock_config_1
|
"light", "hue", "5678", config_entry=mock_config_1
|
||||||
|
@ -467,17 +463,22 @@ async def test_updating_config_entry_id(
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert len(update_events) == 2
|
assert len(update_events) == 2
|
||||||
assert update_events[0]["action"] == "create"
|
assert update_events[0].data == {
|
||||||
assert update_events[0]["entity_id"] == entry.entity_id
|
"action": "create",
|
||||||
assert update_events[1]["action"] == "update"
|
"entity_id": entry.entity_id,
|
||||||
assert update_events[1]["entity_id"] == entry.entity_id
|
}
|
||||||
assert update_events[1]["changes"] == {"config_entry_id": "mock-id-1"}
|
assert update_events[1].data == {
|
||||||
|
"action": "update",
|
||||||
|
"entity_id": entry.entity_id,
|
||||||
|
"changes": {"config_entry_id": "mock-id-1"},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_removing_config_entry_id(
|
async def test_removing_config_entry_id(
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry, update_events
|
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test that we update config entry id in registry."""
|
"""Test that we update config entry id in registry."""
|
||||||
|
update_events = async_capture_events(hass, er.EVENT_ENTITY_REGISTRY_UPDATED)
|
||||||
mock_config = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
mock_config = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
||||||
|
|
||||||
entry = entity_registry.async_get_or_create(
|
entry = entity_registry.async_get_or_create(
|
||||||
|
@ -491,14 +492,18 @@ async def test_removing_config_entry_id(
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert len(update_events) == 2
|
assert len(update_events) == 2
|
||||||
assert update_events[0]["action"] == "create"
|
assert update_events[0].data == {
|
||||||
assert update_events[0]["entity_id"] == entry.entity_id
|
"action": "create",
|
||||||
assert update_events[1]["action"] == "remove"
|
"entity_id": entry.entity_id,
|
||||||
assert update_events[1]["entity_id"] == entry.entity_id
|
}
|
||||||
|
assert update_events[1].data == {
|
||||||
|
"action": "remove",
|
||||||
|
"entity_id": entry.entity_id,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_deleted_entity_removing_config_entry_id(
|
async def test_deleted_entity_removing_config_entry_id(
|
||||||
hass, entity_registry: er.EntityRegistry
|
entity_registry: er.EntityRegistry,
|
||||||
):
|
):
|
||||||
"""Test that we update config entry id in registry on deleted entity."""
|
"""Test that we update config entry id in registry on deleted entity."""
|
||||||
mock_config = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
mock_config = MockConfigEntry(domain="light", entry_id="mock-id-1")
|
||||||
|
@ -1515,9 +1520,7 @@ async def test_entity_category_str_not_allowed(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_hidden_by_str_not_allowed(
|
async def test_hidden_by_str_not_allowed(entity_registry: er.EntityRegistry) -> None:
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
|
||||||
) -> None:
|
|
||||||
"""Test we need to pass hidden by type."""
|
"""Test we need to pass hidden by type."""
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
entity_registry.async_get_or_create(
|
entity_registry.async_get_or_create(
|
||||||
|
@ -1605,9 +1608,12 @@ def test_migrate_entity_to_new_platform(
|
||||||
|
|
||||||
|
|
||||||
async def test_restore_entity(
|
async def test_restore_entity(
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry, update_events, freezer
|
hass: HomeAssistant,
|
||||||
|
entity_registry: er.EntityRegistry,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
):
|
):
|
||||||
"""Make sure entity registry id is stable and entity_id is reused if possible."""
|
"""Make sure entity registry id is stable and entity_id is reused if possible."""
|
||||||
|
update_events = async_capture_events(hass, er.EVENT_ENTITY_REGISTRY_UPDATED)
|
||||||
config_entry = MockConfigEntry(domain="light")
|
config_entry = MockConfigEntry(domain="light")
|
||||||
entry1 = entity_registry.async_get_or_create(
|
entry1 = entity_registry.async_get_or_create(
|
||||||
"light", "hue", "1234", config_entry=config_entry
|
"light", "hue", "1234", config_entry=config_entry
|
||||||
|
@ -1679,22 +1685,22 @@ async def test_restore_entity(
|
||||||
# Check the events
|
# Check the events
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert len(update_events) == 13
|
assert len(update_events) == 13
|
||||||
assert update_events[0] == {"action": "create", "entity_id": "light.hue_1234"}
|
assert update_events[0].data == {"action": "create", "entity_id": "light.hue_1234"}
|
||||||
assert update_events[1] == {"action": "create", "entity_id": "light.hue_5678"}
|
assert update_events[1].data == {"action": "create", "entity_id": "light.hue_5678"}
|
||||||
assert update_events[2]["action"] == "update"
|
assert update_events[2].data["action"] == "update"
|
||||||
assert update_events[3] == {"action": "remove", "entity_id": "light.custom_1"}
|
assert update_events[3].data == {"action": "remove", "entity_id": "light.custom_1"}
|
||||||
assert update_events[4] == {"action": "remove", "entity_id": "light.hue_5678"}
|
assert update_events[4].data == {"action": "remove", "entity_id": "light.hue_5678"}
|
||||||
# Restore entities the 1st time
|
# Restore entities the 1st time
|
||||||
assert update_events[5] == {"action": "create", "entity_id": "light.hue_1234"}
|
assert update_events[5].data == {"action": "create", "entity_id": "light.hue_1234"}
|
||||||
assert update_events[6] == {"action": "create", "entity_id": "light.hue_5678"}
|
assert update_events[6].data == {"action": "create", "entity_id": "light.hue_5678"}
|
||||||
assert update_events[7] == {"action": "remove", "entity_id": "light.hue_1234"}
|
assert update_events[7].data == {"action": "remove", "entity_id": "light.hue_1234"}
|
||||||
assert update_events[8] == {"action": "remove", "entity_id": "light.hue_5678"}
|
assert update_events[8].data == {"action": "remove", "entity_id": "light.hue_5678"}
|
||||||
# Restore entities the 2nd time
|
# Restore entities the 2nd time
|
||||||
assert update_events[9] == {"action": "create", "entity_id": "light.hue_1234"}
|
assert update_events[9].data == {"action": "create", "entity_id": "light.hue_1234"}
|
||||||
assert update_events[10] == {"action": "create", "entity_id": "light.hue_5678"}
|
assert update_events[10].data == {"action": "create", "entity_id": "light.hue_5678"}
|
||||||
assert update_events[11] == {"action": "remove", "entity_id": "light.hue_1234"}
|
assert update_events[11].data == {"action": "remove", "entity_id": "light.hue_1234"}
|
||||||
# Restore entities the 3rd time
|
# Restore entities the 3rd time
|
||||||
assert update_events[12] == {"action": "create", "entity_id": "light.hue_1234"}
|
assert update_events[12].data == {"action": "create", "entity_id": "light.hue_1234"}
|
||||||
|
|
||||||
|
|
||||||
async def test_async_migrate_entry_delete_self(
|
async def test_async_migrate_entry_delete_self(
|
||||||
|
|
Loading…
Add table
Reference in a new issue