Skip to content

Commit babe197

Browse files
authored
Add diagnostic support to WAQI (home-assistant#156811)
1 parent d01843e commit babe197

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""Diagnostics support for WAQI."""
2+
3+
from __future__ import annotations
4+
5+
from dataclasses import asdict
6+
from typing import Any
7+
8+
from homeassistant.core import HomeAssistant
9+
10+
from .coordinator import WAQIConfigEntry
11+
12+
13+
async def async_get_config_entry_diagnostics(
14+
hass: HomeAssistant, entry: WAQIConfigEntry
15+
) -> dict[str, Any]:
16+
"""Return diagnostics for a config entry."""
17+
return {
18+
subentry_id: asdict(coordinator.data)
19+
for subentry_id, coordinator in entry.runtime_data.items()
20+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# serializer version: 1
2+
# name: test_diagnostics
3+
dict({
4+
'ABCDEF': dict({
5+
'air_quality_index': 29,
6+
'attributions': list([
7+
dict({
8+
'logo': 'Netherland-RIVM.png',
9+
'name': 'RIVM - Rijksinstituut voor Volksgezondheid en Milieum, Landelijk Meetnet Luchtkwaliteit',
10+
'url': 'http://www.luchtmeetnet.nl/',
11+
}),
12+
dict({
13+
'logo': None,
14+
'name': 'World Air Quality Index Project',
15+
'url': 'https://waqi.info/',
16+
}),
17+
]),
18+
'city': dict({
19+
'coordinates': dict({
20+
'latitude': 52.105031,
21+
'longitude': 5.124464,
22+
}),
23+
'external_url': 'https://aqicn.org/city/netherland/utrecht/de-jongweg',
24+
'location': None,
25+
'name': 'de Jongweg, Utrecht',
26+
}),
27+
'dominant_pollutant': 'o3',
28+
'extended_air_quality': dict({
29+
'carbon_monoxide': 2.3,
30+
'humidity': 80,
31+
'nephelometry': 80,
32+
'nitrogen_dioxide': 2.3,
33+
'ozone': 29.4,
34+
'pm10': 12,
35+
'pm25': 17,
36+
'pressure': 1008.8,
37+
'sulfur_dioxide': 2.3,
38+
'temperature': 16,
39+
}),
40+
'measured_at': '2023-08-07T17:00:00+02:00',
41+
'station_id': 4584,
42+
}),
43+
})
44+
# ---
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""Tests for the diagnostics data provided by the WAQI integration."""
2+
3+
from unittest.mock import AsyncMock
4+
5+
from syrupy.assertion import SnapshotAssertion
6+
7+
from homeassistant.core import HomeAssistant
8+
9+
from . import setup_integration
10+
11+
from tests.common import MockConfigEntry
12+
from tests.components.diagnostics import get_diagnostics_for_config_entry
13+
from tests.typing import ClientSessionGenerator
14+
15+
16+
async def test_diagnostics(
17+
hass: HomeAssistant,
18+
hass_client: ClientSessionGenerator,
19+
mock_waqi: AsyncMock,
20+
mock_config_entry: MockConfigEntry,
21+
snapshot: SnapshotAssertion,
22+
) -> None:
23+
"""Test diagnostics."""
24+
await setup_integration(hass, mock_config_entry)
25+
assert (
26+
await get_diagnostics_for_config_entry(hass, hass_client, mock_config_entry)
27+
== snapshot
28+
)

0 commit comments

Comments
 (0)