diff --git a/homeassistant/components/homeassistant_connect_zbt2/diagnostics.py b/homeassistant/components/homeassistant_connect_zbt2/diagnostics.py new file mode 100644 index 00000000000000..dcbd19675025a2 --- /dev/null +++ b/homeassistant/components/homeassistant_connect_zbt2/diagnostics.py @@ -0,0 +1,13 @@ +"""Provides diagnostics for the Home Assistant Connect ZBT-2 integration.""" + +from typing import Any + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, config_entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + return {"config_entry": config_entry.as_dict()} diff --git a/tests/components/homeassistant_connect_zbt2/snapshots/test_diagnostics.ambr b/tests/components/homeassistant_connect_zbt2/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000000..b1f447d81cefc9 --- /dev/null +++ b/tests/components/homeassistant_connect_zbt2/snapshots/test_diagnostics.ambr @@ -0,0 +1,32 @@ +# serializer version: 1 +# name: test_diagnostics_for_config_entry + dict({ + 'config_entry': dict({ + 'data': dict({ + 'device': '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_80B54EEFAE18-if01-port0', + 'firmware': 'ezsp', + 'firmware_version': '7.3.1.0 build 0', + 'manufacturer': 'Nabu Casa', + 'pid': '4001', + 'product': 'ZBT-2', + 'serial_number': '80B54EEFAE18', + 'vid': '303A', + }), + 'disabled_by': None, + 'discovery_keys': dict({ + }), + 'domain': 'homeassistant_connect_zbt2', + 'minor_version': 1, + 'options': dict({ + }), + 'pref_disable_new_entities': False, + 'pref_disable_polling': False, + 'source': 'user', + 'subentries': list([ + ]), + 'title': 'Mock Title', + 'unique_id': None, + 'version': 1, + }), + }) +# --- diff --git a/tests/components/homeassistant_connect_zbt2/test_diagnostics.py b/tests/components/homeassistant_connect_zbt2/test_diagnostics.py new file mode 100644 index 00000000000000..e64dda6d110778 --- /dev/null +++ b/tests/components/homeassistant_connect_zbt2/test_diagnostics.py @@ -0,0 +1,51 @@ +"""Tests for the diagnostics data provided by the Home Assistant Connect ZBT-2 integration.""" + +from syrupy.assertion import SnapshotAssertion +from syrupy.filters import props + +from homeassistant.core import HomeAssistant +from homeassistant.setup import async_setup_component + +from .common import USB_DATA_ZBT2 + +from tests.common import MockConfigEntry +from tests.components.diagnostics import get_diagnostics_for_config_entry +from tests.typing import ClientSessionGenerator + + +async def test_diagnostics_for_config_entry( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + snapshot: SnapshotAssertion, +) -> None: + """Test diagnostics for config entry.""" + await async_setup_component(hass, "homeassistant", {}) + + # Set up the ZBT-2 integration + zbt2_config_entry = MockConfigEntry( + domain="homeassistant_connect_zbt2", + data={ + "firmware": "ezsp", + "firmware_version": "7.3.1.0 build 0", + "device": USB_DATA_ZBT2.device, + "manufacturer": USB_DATA_ZBT2.manufacturer, + "pid": USB_DATA_ZBT2.pid, + "product": USB_DATA_ZBT2.description, + "serial_number": USB_DATA_ZBT2.serial_number, + "vid": USB_DATA_ZBT2.vid, + }, + version=1, + minor_version=1, + ) + zbt2_config_entry.add_to_hass(hass) + + assert await hass.config_entries.async_setup(zbt2_config_entry.entry_id) + await hass.async_block_till_done() + + diagnostics_data = await get_diagnostics_for_config_entry( + hass, hass_client, zbt2_config_entry + ) + + assert diagnostics_data == snapshot( + exclude=props("created_at", "modified_at", "entry_id") + )