Add snapshot testing support

This commit is contained in:
Franck Nijhof
2023-05-25 21:58:35 +02:00
parent 03d9f84220
commit b41aa2ceb3
+14
View File
@@ -28,6 +28,7 @@ from homeassistant.helpers import (
area_registry as ar,
device_registry as dr,
entity_registry as er,
folder_registry as fr,
issue_registry as ir,
)
@@ -64,6 +65,10 @@ class FlowResultSnapshot(dict):
"""Tiny wrapper to represent a flow result in snapshots."""
class FolderRegistryEntrySnapshot(dict):
"""Tiny wrapper to represent an folder registry entry in snapshots."""
class IssueRegistryItemSnapshot(dict):
"""Tiny wrapper to represent an entity registry entry in snapshots."""
@@ -101,6 +106,8 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
serializable_data = cls._serializable_device_registry_entry(data)
elif isinstance(data, er.RegistryEntry):
serializable_data = cls._serializable_entity_registry_entry(data)
elif isinstance(data, fr.FolderEntry):
serializable_data = cls._serializable_issue_registry_entry(data)
elif isinstance(data, ir.IssueEntry):
serializable_data = cls._serializable_issue_registry_entry(data)
elif isinstance(data, dict) and "flow_id" in data and "handler" in data:
@@ -182,6 +189,13 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
"""Prepare a Home Assistant flow result for serialization."""
return FlowResultSnapshot(data | {"flow_id": ANY})
@classmethod
def _serializable_folder_registry_entry(
cls, data: fr.FolderEntry
) -> SerializableData:
"""Prepare a Home Assistant folder registry entry for serialization."""
return FolderRegistryEntrySnapshot(dataclasses.asdict(data))
@classmethod
def _serializable_issue_registry_entry(
cls, data: ir.IssueEntry