Add diagnostics platform to IronOS integration (#136040)

This commit is contained in:
Manu 2025-01-20 08:12:42 +01:00 committed by GitHub
parent 85f10cf60a
commit 9e37c0dc8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 73 additions and 1 deletions

View File

@ -0,0 +1,25 @@
"""Diagnostics platform for IronOS integration."""
from __future__ import annotations
from typing import Any
from homeassistant.const import CONF_ADDRESS
from homeassistant.core import HomeAssistant
from . import IronOSConfigEntry
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: IronOSConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
return {
"config_entry_data": {
CONF_ADDRESS: config_entry.unique_id,
},
"device_info": config_entry.runtime_data.live_data.device_info,
"live_data": config_entry.runtime_data.live_data.data,
"settings_data": config_entry.runtime_data.settings.data,
}

View File

@ -43,7 +43,7 @@ rules:
# Gold # Gold
devices: done devices: done
diagnostics: todo diagnostics: done
discovery-update-info: discovery-update-info:
status: exempt status: exempt
comment: Device is not connected to an ip network. Other information from discovery is immutable and does not require updating. comment: Device is not connected to an ip network. Other information from discovery is immutable and does not require updating.

View File

@ -0,0 +1,18 @@
# serializer version: 1
# name: test_diagnostics
dict({
'config_entry_data': dict({
'address': 'c0:ff:ee:c0:ff:ee',
}),
'device_info': dict({
'__type': "<class 'pynecil.types.DeviceInfoResponse'>",
'repr': "DeviceInfoResponse(build='v2.22', device_id='c0ffeeC0', address='c0:ff:ee:c0:ff:ee', device_sn='0000c0ffeec0ffee', name='Pinecil-C0FFEEE', is_synced=False)",
}),
'live_data': dict({
'__type': "<class 'pynecil.types.LiveDataResponse'>",
'repr': 'LiveDataResponse(live_temp=298, setpoint_temp=300, dc_voltage=20.6, handle_temp=36.3, pwm_level=41, power_src=<PowerSource.PD: 3>, tip_resistance=6.2, uptime=1671, movement_time=10000, max_tip_temp_ability=460, tip_voltage=2212, hall_sensor=0, operating_mode=<OperatingMode.SOLDERING: 1>, estimated_power=24.8)',
}),
'settings_data': dict({
}),
})
# ---

View File

@ -0,0 +1,29 @@
"""Tests for IronOS diagnostics."""
import pytest
from syrupy.assertion import SnapshotAssertion
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
@pytest.mark.usefixtures(
"entity_registry_enabled_by_default", "mock_pynecil", "ble_device"
)
async def test_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
config_entry: MockConfigEntry,
snapshot: SnapshotAssertion,
) -> None:
"""Test diagnostics."""
config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
assert (
await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
== snapshot
)