1
0
mirror of https://github.com/elisspace/core.git synced 2026-08-29 15:43:55 +00:00

Add support to Syrupy for test snapshotting

This commit is contained in:
Franck Nijhof
2023-05-25 20:36:24 +02:00
parent b9e33bdbad
commit 79b24c50be

View File

@@ -29,6 +29,7 @@ from homeassistant.helpers import (
device_registry as dr,
entity_registry as er,
issue_registry as ir,
label_registry as lr,
)
@@ -60,6 +61,10 @@ class EntityRegistryEntrySnapshot(dict):
"""Tiny wrapper to represent an entity registry entry in snapshots."""
class LabelRegistryEntrySnapshot(dict):
"""Tiny wrapper to represent an label registry entry in snapshots."""
class FlowResultSnapshot(dict):
"""Tiny wrapper to represent a flow result in snapshots."""
@@ -103,6 +108,8 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
serializable_data = cls._serializable_entity_registry_entry(data)
elif isinstance(data, ir.IssueEntry):
serializable_data = cls._serializable_issue_registry_entry(data)
elif isinstance(data, lr.LabelEntry):
serializable_data = cls._serializable_issue_registry_entry(data)
elif isinstance(data, dict) and "flow_id" in data and "handler" in data:
serializable_data = cls._serializable_flow_result(data)
elif isinstance(data, vol.Schema):
@@ -189,6 +196,13 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
"""Prepare a Home Assistant issue registry entry for serialization."""
return IssueRegistryItemSnapshot(data.to_json() | {"created": ANY})
@classmethod
def _serializable_label_registry_entry(
cls, data: lr.LabelEntry
) -> SerializableData:
"""Prepare a Home Assistant label registry entry for serialization."""
return LabelRegistryEntrySnapshot(dataclasses.asdict(data))
@classmethod
def _serializable_state(cls, data: State) -> SerializableData:
"""Prepare a Home Assistant State for serialization."""