Add diagnostics to LaCrosse View (#92212)

pull/92255/head
IceBotYT 2023-04-29 12:53:40 -04:00 committed by GitHub
parent ac4d9216d6
commit d23bd2ad68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,28 @@
"""Diagnostics support for LaCrosse View."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from .const import DOMAIN
from .coordinator import LaCrosseUpdateCoordinator
TO_REDACT = {CONF_PASSWORD, CONF_USERNAME}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
coordinator: LaCrosseUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][
"coordinator"
]
return {
"entry": async_redact_data(entry.as_dict(), TO_REDACT),
"coordinator_data": coordinator.data,
}

View File

@ -0,0 +1,30 @@
# serializer version: 1
# name: test_entry_diagnostics
dict({
'coordinator_data': list([
dict({
'__type': "<class 'lacrosse_view.Sensor'>",
'repr': "Sensor(name='Test', device_id='1', type='Test', sensor_id='2', sensor_field_names=['Temperature'], location=Location(id='1', name='Test'), permissions={'read': True}, model='Test', data={'Temperature': {'values': [{'s': '2'}], 'unit': 'degrees_celsius'}})",
}),
]),
'entry': dict({
'data': dict({
'id': '1',
'name': 'Test',
'password': '**REDACTED**',
'username': '**REDACTED**',
}),
'disabled_by': None,
'domain': 'lacrosse_view',
'entry_id': 'lacrosse_view_test_entry_id',
'options': dict({
}),
'pref_disable_new_entities': False,
'pref_disable_polling': False,
'source': 'user',
'title': 'Mock Title',
'unique_id': None,
'version': 1,
}),
})
# ---

View File

@ -0,0 +1,36 @@
"""Test diagnostics of LaCrosse View."""
from unittest.mock import patch
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.lacrosse_view import DOMAIN
from homeassistant.core import HomeAssistant
from . import MOCK_ENTRY_DATA, TEST_SENSOR
from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_entry_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
) -> None:
"""Test config entry diagnostics."""
config_entry = MockConfigEntry(
domain=DOMAIN, data=MOCK_ENTRY_DATA, entry_id="lacrosse_view_test_entry_id"
)
config_entry.add_to_hass(hass)
with patch("lacrosse_view.LaCrosse.login", return_value=True), patch(
"lacrosse_view.LaCrosse.get_sensors", return_value=[TEST_SENSOR]
):
assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
assert (
await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
== snapshot
)