diff --git a/tests/components/rainforest_raven/__init__.py b/tests/components/rainforest_raven/__init__.py index 9d40652b42d..ead1bb2ad3f 100644 --- a/tests/components/rainforest_raven/__init__.py +++ b/tests/components/rainforest_raven/__init__.py @@ -1,5 +1,7 @@ """Tests for the Rainforest RAVEn component.""" +from unittest.mock import AsyncMock + from homeassistant.components.rainforest_raven.const import DOMAIN from homeassistant.const import CONF_DEVICE, CONF_MAC @@ -14,7 +16,7 @@ from .const import ( SUMMATION, ) -from tests.common import AsyncMock, MockConfigEntry +from tests.common import MockConfigEntry def create_mock_device() -> AsyncMock: @@ -42,4 +44,5 @@ def create_mock_entry(no_meters: bool = False) -> MockConfigEntry: CONF_DEVICE: DISCOVERY_INFO.device, CONF_MAC: [] if no_meters else [METER_INFO[None].meter_mac_id.hex()], }, + entry_id="01JADXBJSPYEBAFPKGXDJWZBQ8", ) diff --git a/tests/components/rainforest_raven/snapshots/test_diagnostics.ambr b/tests/components/rainforest_raven/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000..e131bf3d952 --- /dev/null +++ b/tests/components/rainforest_raven/snapshots/test_diagnostics.ambr @@ -0,0 +1,107 @@ +# serializer version: 1 +# name: test_entry_diagnostics + dict({ + 'config_entry': dict({ + 'data': dict({ + 'device': '/dev/ttyACM0', + 'mac': '**REDACTED**', + }), + 'disabled_by': None, + 'discovery_keys': dict({ + }), + 'domain': 'rainforest_raven', + 'entry_id': '01JADXBJSPYEBAFPKGXDJWZBQ8', + 'minor_version': 1, + 'options': dict({ + }), + 'pref_disable_new_entities': False, + 'pref_disable_polling': False, + 'source': 'user', + 'title': 'Mock Title', + 'unique_id': None, + 'version': 1, + }), + 'data': dict({ + 'Meters': dict({ + '**REDACTED0**': dict({ + 'CurrentSummationDelivered': dict({ + 'device_mac_id': '**REDACTED**', + 'meter_mac_id': '**REDACTED**', + 'summation_delivered': '23456.7890', + 'summation_received': '00000.0000', + 'time_stamp': None, + }), + 'InstantaneousDemand': dict({ + 'demand': '1.2345', + 'device_mac_id': '**REDACTED**', + 'meter_mac_id': '**REDACTED**', + 'time_stamp': None, + }), + 'PriceCluster': dict({ + 'currency': dict({ + '__type': "", + 'repr': "", + }), + 'device_mac_id': '**REDACTED**', + 'meter_mac_id': '**REDACTED**', + 'price': '0.10', + 'rate_label': 'Set by user', + 'tier': 3, + 'tier_label': 'Set by user', + 'time_stamp': None, + }), + }), + }), + 'NetworkInfo': dict({ + 'channel': 13, + 'coord_mac_id': None, + 'description': None, + 'device_mac_id': '**REDACTED**', + 'ext_pan_id': None, + 'link_strength': 100, + 'short_addr': None, + 'status': None, + 'status_code': None, + }), + }), + }) +# --- +# name: test_entry_diagnostics_no_meters + dict({ + 'config_entry': dict({ + 'data': dict({ + 'device': '/dev/ttyACM0', + 'mac': '**REDACTED**', + }), + 'disabled_by': None, + 'discovery_keys': dict({ + }), + 'domain': 'rainforest_raven', + 'entry_id': '01JADXBJSPYEBAFPKGXDJWZBQ8', + 'minor_version': 1, + 'options': dict({ + }), + 'pref_disable_new_entities': False, + 'pref_disable_polling': False, + 'source': 'user', + 'title': 'Mock Title', + 'unique_id': None, + 'version': 1, + }), + 'data': dict({ + 'Meters': dict({ + }), + 'NetworkInfo': dict({ + 'channel': 13, + 'coord_mac_id': None, + 'description': None, + 'device_mac_id': '**REDACTED**', + 'ext_pan_id': None, + 'link_strength': 100, + 'short_addr': None, + 'status': None, + 'status_code': None, + }), + }), + }) +# --- diff --git a/tests/components/rainforest_raven/test_diagnostics.py b/tests/components/rainforest_raven/test_diagnostics.py index 93cf12b434f..ae231b3c8c2 100644 --- a/tests/components/rainforest_raven/test_diagnostics.py +++ b/tests/components/rainforest_raven/test_diagnostics.py @@ -1,22 +1,24 @@ """Test the Rainforest Eagle diagnostics.""" -from dataclasses import asdict +from unittest.mock import AsyncMock import pytest +from syrupy.assertion import SnapshotAssertion +from syrupy.filters import props -from homeassistant.components.diagnostics import REDACTED -from homeassistant.const import CONF_MAC from homeassistant.core import HomeAssistant from . import create_mock_entry -from .const import DEMAND, NETWORK_INFO, PRICE_CLUSTER, SUMMATION +from tests.common import MockConfigEntry from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.typing import ClientSessionGenerator @pytest.fixture -async def mock_entry_no_meters(hass: HomeAssistant, mock_device): +async def mock_entry_no_meters( + hass: HomeAssistant, mock_device: AsyncMock +) -> MockConfigEntry: """Mock a RAVEn config entry with no meters.""" mock_entry = create_mock_entry(True) mock_entry.add_to_hass(hass) @@ -28,61 +30,23 @@ async def mock_entry_no_meters(hass: HomeAssistant, mock_device): async def test_entry_diagnostics_no_meters( hass: HomeAssistant, hass_client: ClientSessionGenerator, - mock_device, - mock_entry_no_meters, + mock_entry_no_meters: MockConfigEntry, + snapshot: SnapshotAssertion, ) -> None: """Test RAVEn diagnostics before the coordinator has updated.""" result = await get_diagnostics_for_config_entry( hass, hass_client, mock_entry_no_meters ) - - config_entry_dict = mock_entry_no_meters.as_dict() - config_entry_dict["data"][CONF_MAC] = REDACTED - - assert result == { - "config_entry": config_entry_dict | {"discovery_keys": {}}, - "data": { - "Meters": {}, - "NetworkInfo": {**asdict(NETWORK_INFO), "device_mac_id": REDACTED}, - }, - } + assert result == snapshot(exclude=props("created_at", "modified_at")) async def test_entry_diagnostics( - hass: HomeAssistant, hass_client: ClientSessionGenerator, mock_device, mock_entry + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + mock_entry: MockConfigEntry, + snapshot: SnapshotAssertion, ) -> None: """Test RAVEn diagnostics.""" result = await get_diagnostics_for_config_entry(hass, hass_client, mock_entry) - config_entry_dict = mock_entry.as_dict() - config_entry_dict["data"][CONF_MAC] = REDACTED - - assert result == { - "config_entry": config_entry_dict | {"discovery_keys": {}}, - "data": { - "Meters": { - "**REDACTED0**": { - "CurrentSummationDelivered": { - **asdict(SUMMATION), - "device_mac_id": REDACTED, - "meter_mac_id": REDACTED, - }, - "InstantaneousDemand": { - **asdict(DEMAND), - "device_mac_id": REDACTED, - "meter_mac_id": REDACTED, - }, - "PriceCluster": { - **asdict(PRICE_CLUSTER), - "device_mac_id": REDACTED, - "meter_mac_id": REDACTED, - "currency": { - "__type": str(type(PRICE_CLUSTER.currency)), - "repr": repr(PRICE_CLUSTER.currency), - }, - }, - }, - }, - "NetworkInfo": {**asdict(NETWORK_INFO), "device_mac_id": REDACTED}, - }, - } + assert result == snapshot(exclude=props("created_at", "modified_at"))