mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Use snapshot assertion in rainforest_raven diagnostic tests (#128602)
This commit is contained in:
parent
10d26bf734
commit
5580c3fda0
@ -1,5 +1,7 @@
|
|||||||
"""Tests for the Rainforest RAVEn component."""
|
"""Tests for the Rainforest RAVEn component."""
|
||||||
|
|
||||||
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
from homeassistant.components.rainforest_raven.const import DOMAIN
|
from homeassistant.components.rainforest_raven.const import DOMAIN
|
||||||
from homeassistant.const import CONF_DEVICE, CONF_MAC
|
from homeassistant.const import CONF_DEVICE, CONF_MAC
|
||||||
|
|
||||||
@ -14,7 +16,7 @@ from .const import (
|
|||||||
SUMMATION,
|
SUMMATION,
|
||||||
)
|
)
|
||||||
|
|
||||||
from tests.common import AsyncMock, MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
|
||||||
def create_mock_device() -> AsyncMock:
|
def create_mock_device() -> AsyncMock:
|
||||||
@ -42,4 +44,5 @@ def create_mock_entry(no_meters: bool = False) -> MockConfigEntry:
|
|||||||
CONF_DEVICE: DISCOVERY_INFO.device,
|
CONF_DEVICE: DISCOVERY_INFO.device,
|
||||||
CONF_MAC: [] if no_meters else [METER_INFO[None].meter_mac_id.hex()],
|
CONF_MAC: [] if no_meters else [METER_INFO[None].meter_mac_id.hex()],
|
||||||
},
|
},
|
||||||
|
entry_id="01JADXBJSPYEBAFPKGXDJWZBQ8",
|
||||||
)
|
)
|
||||||
|
@ -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': "<enum 'Currency'>",
|
||||||
|
'repr': "<Currency.USD: 'USD'>",
|
||||||
|
}),
|
||||||
|
'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,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
# ---
|
@ -1,22 +1,24 @@
|
|||||||
"""Test the Rainforest Eagle diagnostics."""
|
"""Test the Rainforest Eagle diagnostics."""
|
||||||
|
|
||||||
from dataclasses import asdict
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
import pytest
|
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 homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import create_mock_entry
|
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.components.diagnostics import get_diagnostics_for_config_entry
|
||||||
from tests.typing import ClientSessionGenerator
|
from tests.typing import ClientSessionGenerator
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@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 a RAVEn config entry with no meters."""
|
||||||
mock_entry = create_mock_entry(True)
|
mock_entry = create_mock_entry(True)
|
||||||
mock_entry.add_to_hass(hass)
|
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(
|
async def test_entry_diagnostics_no_meters(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
hass_client: ClientSessionGenerator,
|
hass_client: ClientSessionGenerator,
|
||||||
mock_device,
|
mock_entry_no_meters: MockConfigEntry,
|
||||||
mock_entry_no_meters,
|
snapshot: SnapshotAssertion,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test RAVEn diagnostics before the coordinator has updated."""
|
"""Test RAVEn diagnostics before the coordinator has updated."""
|
||||||
result = await get_diagnostics_for_config_entry(
|
result = await get_diagnostics_for_config_entry(
|
||||||
hass, hass_client, mock_entry_no_meters
|
hass, hass_client, mock_entry_no_meters
|
||||||
)
|
)
|
||||||
|
assert result == snapshot(exclude=props("created_at", "modified_at"))
|
||||||
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},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async def test_entry_diagnostics(
|
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:
|
) -> None:
|
||||||
"""Test RAVEn diagnostics."""
|
"""Test RAVEn diagnostics."""
|
||||||
result = await get_diagnostics_for_config_entry(hass, hass_client, mock_entry)
|
result = await get_diagnostics_for_config_entry(hass, hass_client, mock_entry)
|
||||||
|
|
||||||
config_entry_dict = mock_entry.as_dict()
|
assert result == snapshot(exclude=props("created_at", "modified_at"))
|
||||||
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},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user