diff --git a/homeassistant/components/litterrobot/diagnostics.py b/homeassistant/components/litterrobot/diagnostics.py new file mode 100644 index 00000000000..4cdd8cb1a8c --- /dev/null +++ b/homeassistant/components/litterrobot/diagnostics.py @@ -0,0 +1,24 @@ +"""Diagnostics support for Litter-Robot.""" + +from __future__ import annotations + +from typing import Any + +from pylitterbot.utils import REDACT_FIELDS + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.core import HomeAssistant + +from .coordinator import LitterRobotConfigEntry + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: LitterRobotConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + account = entry.runtime_data.account + data = { + "robots": [robot.to_dict() for robot in account.robots], + "pets": [pet.to_dict() for pet in account.pets], + } + return async_redact_data(data, REDACT_FIELDS) diff --git a/homeassistant/components/litterrobot/quality_scale.yaml b/homeassistant/components/litterrobot/quality_scale.yaml index 612826475dd..172e3ce1f27 100644 --- a/homeassistant/components/litterrobot/quality_scale.yaml +++ b/homeassistant/components/litterrobot/quality_scale.yaml @@ -42,7 +42,7 @@ rules: # Gold devices: done - diagnostics: todo + diagnostics: done discovery-update-info: status: done comment: The integration is cloud-based diff --git a/tests/components/litterrobot/snapshots/test_diagnostics.ambr b/tests/components/litterrobot/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000..7099bf41d31 --- /dev/null +++ b/tests/components/litterrobot/snapshots/test_diagnostics.ambr @@ -0,0 +1,24 @@ +# serializer version: 1 +# name: test_diagnostics + dict({ + 'pets': list([ + ]), + 'robots': list([ + dict({ + 'cleanCycleWaitTimeMinutes': '7', + 'cycleCapacity': '30', + 'cycleCount': '15', + 'cyclesAfterDrawerFull': '0', + 'lastSeen': '2022-09-17T13:06:37.884Z', + 'litterRobotId': '**REDACTED**', + 'litterRobotNickname': 'Test', + 'litterRobotSerial': '**REDACTED**', + 'nightLightActive': '1', + 'panelLockActive': '0', + 'powerStatus': 'AC', + 'sleepModeActive': '112:50:19', + 'unitStatus': 'RDY', + }), + ]), + }) +# --- diff --git a/tests/components/litterrobot/test_diagnostics.py b/tests/components/litterrobot/test_diagnostics.py new file mode 100644 index 00000000000..1d0e37845d9 --- /dev/null +++ b/tests/components/litterrobot/test_diagnostics.py @@ -0,0 +1,24 @@ +"""Test Litter-Robot diagnostics.""" + +from unittest.mock import MagicMock + +from syrupy.assertion import SnapshotAssertion + +from homeassistant.core import HomeAssistant + +from .conftest import setup_integration + +from tests.components.diagnostics import get_diagnostics_for_config_entry +from tests.typing import ClientSessionGenerator + + +async def test_diagnostics( + hass: HomeAssistant, + mock_account: MagicMock, + hass_client: ClientSessionGenerator, + snapshot: SnapshotAssertion, +) -> None: + """Test generating diagnostics for a config entry.""" + entry = await setup_integration(hass, mock_account) + diag = await get_diagnostics_for_config_entry(hass, hass_client, entry) + assert diag == snapshot