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:
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user