MelCloud add diagnostics platform (#115962)

This commit is contained in:
Erwin Douna 2024-06-21 15:07:43 +02:00 committed by GitHub
parent bad5eaf329
commit 7f20173f6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,38 @@
"""Diagnostics support for MelCloud."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics.util import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_TOKEN, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
TO_REDACT = {
CONF_USERNAME,
CONF_TOKEN,
}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for the config entry."""
ent_reg = er.async_get(hass)
entities = [
entity.entity_id
for entity in er.async_entries_for_config_entry(ent_reg, entry.entry_id)
]
entity_states = {entity: hass.states.get(entity) for entity in entities}
entry_dict = entry.as_dict()
if "data" in entry_dict:
entry_dict["data"] = async_redact_data(entry_dict["data"], TO_REDACT)
return {
"entry": entry_dict,
"entities": entity_states,
}

View File

@ -0,0 +1,23 @@
# serializer version: 1
# name: test_get_config_entry_diagnostics
dict({
'entities': dict({
}),
'entry': dict({
'data': dict({
}),
'disabled_by': None,
'domain': 'melcloud',
'entry_id': 'TEST_ENTRY_ID',
'minor_version': 1,
'options': dict({
}),
'pref_disable_new_entities': False,
'pref_disable_polling': False,
'source': 'user',
'title': 'melcloud',
'unique_id': 'UNIQUE_TEST_ID',
'version': 1,
}),
})
# ---

View File

@ -0,0 +1,39 @@
"""Test the DSMR Reader component diagnostics."""
from unittest.mock import patch
from syrupy import SnapshotAssertion
from homeassistant.components.melcloud.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_get_config_entry_diagnostics(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
hass_client: ClientSessionGenerator,
) -> None:
"""Test if get_config_entry_diagnostics returns the correct data."""
config_entry = MockConfigEntry(
domain=DOMAIN,
title=DOMAIN,
options={},
entry_id="TEST_ENTRY_ID",
unique_id="UNIQUE_TEST_ID",
)
config_entry.add_to_hass(hass)
with patch(
"homeassistant.components.melcloud.async_setup_entry", return_value=True
):
await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
diagnostics = await get_diagnostics_for_config_entry(
hass, hass_client, config_entry
)
assert diagnostics == snapshot