From 0c2acdf337d9fc2ef2033028eb02f4c6412e8dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sat, 23 Apr 2022 10:28:07 +0200 Subject: [PATCH] Add Airzone diagnostics (#69362) Co-authored-by: J. Nick Koston --- .../components/airzone/diagnostics.py | 29 ++++++++++ tests/components/airzone/test_diagnostics.py | 57 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 homeassistant/components/airzone/diagnostics.py create mode 100644 tests/components/airzone/test_diagnostics.py diff --git a/homeassistant/components/airzone/diagnostics.py b/homeassistant/components/airzone/diagnostics.py new file mode 100644 index 00000000000..8baa106beb1 --- /dev/null +++ b/homeassistant/components/airzone/diagnostics.py @@ -0,0 +1,29 @@ +"""Support for the Airzone diagnostics.""" +from __future__ import annotations + +from typing import Any + +from aioairzone.const import AZD_MAC + +from homeassistant.components.diagnostics.util import async_redact_data +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant + +from .const import DOMAIN +from .coordinator import AirzoneUpdateCoordinator + +TO_REDACT = [ + AZD_MAC, +] + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, config_entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator: AirzoneUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + + return { + "info": async_redact_data(config_entry.data, TO_REDACT), + "data": async_redact_data(coordinator.data, TO_REDACT), + } diff --git a/tests/components/airzone/test_diagnostics.py b/tests/components/airzone/test_diagnostics.py new file mode 100644 index 00000000000..7425677876f --- /dev/null +++ b/tests/components/airzone/test_diagnostics.py @@ -0,0 +1,57 @@ +"""The diagnostics tests for the Airzone platform.""" + +from aioairzone.const import ( + AZD_ID, + AZD_MASTER, + AZD_SYSTEM, + AZD_SYSTEMS, + AZD_ZONES, + AZD_ZONES_NUM, +) +from aiohttp import ClientSession + +from homeassistant.components.airzone.const import DOMAIN +from homeassistant.const import CONF_HOST, CONF_PORT +from homeassistant.core import HomeAssistant + +from .util import CONFIG, async_init_integration + +from tests.components.diagnostics import get_diagnostics_for_config_entry + + +async def test_config_entry_diagnostics( + hass: HomeAssistant, hass_client: ClientSession +) -> None: + """Test config entry diagnostics.""" + await async_init_integration(hass) + assert hass.data[DOMAIN] + + config_entry = hass.config_entries.async_entries(DOMAIN)[0] + + diag = await get_diagnostics_for_config_entry(hass, hass_client, config_entry) + + assert diag["info"][CONF_HOST] == CONFIG[CONF_HOST] + assert diag["info"][CONF_PORT] == CONFIG[CONF_PORT] + + assert diag["data"][AZD_SYSTEMS]["1"][AZD_ID] == 1 + assert diag["data"][AZD_SYSTEMS]["1"][AZD_ZONES_NUM] == 5 + + assert diag["data"][AZD_ZONES]["1:1"][AZD_ID] == 1 + assert diag["data"][AZD_ZONES]["1:1"][AZD_MASTER] == 1 + assert diag["data"][AZD_ZONES]["1:1"][AZD_SYSTEM] == 1 + + assert diag["data"][AZD_ZONES]["1:2"][AZD_ID] == 2 + assert diag["data"][AZD_ZONES]["1:2"][AZD_MASTER] == 0 + assert diag["data"][AZD_ZONES]["1:2"][AZD_SYSTEM] == 1 + + assert diag["data"][AZD_ZONES]["1:3"][AZD_ID] == 3 + assert diag["data"][AZD_ZONES]["1:3"][AZD_MASTER] == 0 + assert diag["data"][AZD_ZONES]["1:3"][AZD_SYSTEM] == 1 + + assert diag["data"][AZD_ZONES]["1:4"][AZD_ID] == 4 + assert diag["data"][AZD_ZONES]["1:4"][AZD_MASTER] == 0 + assert diag["data"][AZD_ZONES]["1:4"][AZD_SYSTEM] == 1 + + assert diag["data"][AZD_ZONES]["1:5"][AZD_ID] == 5 + assert diag["data"][AZD_ZONES]["1:5"][AZD_MASTER] == 0 + assert diag["data"][AZD_ZONES]["1:5"][AZD_SYSTEM] == 1