Implement diagnostics platform for APCUPSD (#112284)

* Implement diagnostic platform for APCUPSd

* Put APCUPSd in gold quality scale

* Revert quality scale update

* Use snapshot testing for apcupsd

* Prettify the code
This commit is contained in:
Yuxin Wang 2024-03-24 18:40:41 -04:00 committed by GitHub
parent 17378ce408
commit 76052a5385
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,22 @@
"""Diagnostics support for APCUPSD."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from .const import DOMAIN
from .coordinator import APCUPSdCoordinator, APCUPSdData
TO_REDACT = {"SERIALNO", "HOSTNAME"}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
coordinator: APCUPSdCoordinator = hass.data[DOMAIN][entry.entry_id]
data: APCUPSdData = coordinator.data
return async_redact_data(data, TO_REDACT)

View File

@ -0,0 +1,46 @@
# serializer version: 1
# name: test_diagnostics
dict({
'ALARMDEL': '30 Seconds',
'APC': '001,038,0985',
'BATTDATE': '1970-01-01',
'BATTV': '13.7 Volts',
'BCHARGE': '100.0 Percent',
'CABLE': 'USB Cable',
'CUMONBATT': '8 Seconds',
'DATE': '1970-01-01 00:00:00 0000',
'DRIVER': 'USB UPS Driver',
'END APC': '1970-01-01 00:00:00 0000',
'FIRMWARE': '928.a8 .D USB FW:a8',
'HITRANS': '139.0 Volts',
'ITEMP': '34.6 C Internal',
'LASTSTEST': '1970-01-01 00:00:00 0000',
'LASTXFER': 'Automatic or explicit self test',
'LINEV': '124.0 Volts',
'LOADPCT': '14.0 Percent',
'LOTRANS': '92.0 Volts',
'MAXTIME': '0 Seconds',
'MBATTCHG': '5 Percent',
'MINTIMEL': '3 Minutes',
'MODEL': 'Back-UPS ES 600',
'NOMAPNT': '60.0 VA',
'NOMBATTV': '12.0 Volts',
'NOMINV': '120 Volts',
'NOMPOWER': '330 Watts',
'NUMXFERS': '1',
'OUTCURNT': '0.88 Amps',
'SELFTEST': 'NO',
'SENSE': 'Medium',
'SERIALNO': '**REDACTED**',
'STATFLAG': '0x05000008',
'STATUS': 'ONLINE',
'STESTI': '7 days',
'TIMELEFT': '51.0 Minutes',
'TONBATT': '0 Seconds',
'UPSMODE': 'Stand Alone',
'UPSNAME': 'MyUPS',
'VERSION': '3.14.14 (31 May 2016) unknown',
'XOFFBATT': '1970-01-01 00:00:00 0000',
'XONBATT': '1970-01-01 00:00:00 0000',
})
# ---

View File

@ -0,0 +1,18 @@
"""Test APCUPSd diagnostics reporting abilities."""
from syrupy.assertion import SnapshotAssertion
from homeassistant.core import HomeAssistant
from tests.components.apcupsd import async_init_integration
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
) -> None:
"""Test diagnostics."""
entry = await async_init_integration(hass)
assert await get_diagnostics_for_config_entry(hass, hass_client, entry) == snapshot