mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 14:27:07 +00:00
Fix airnow timezone look up (#120136)
This commit is contained in:
parent
cdc157de74
commit
65a740f35e
@ -14,6 +14,7 @@ ATTR_API_POLLUTANT = "Pollutant"
|
|||||||
ATTR_API_REPORT_DATE = "DateObserved"
|
ATTR_API_REPORT_DATE = "DateObserved"
|
||||||
ATTR_API_REPORT_HOUR = "HourObserved"
|
ATTR_API_REPORT_HOUR = "HourObserved"
|
||||||
ATTR_API_REPORT_TZ = "LocalTimeZone"
|
ATTR_API_REPORT_TZ = "LocalTimeZone"
|
||||||
|
ATTR_API_REPORT_TZINFO = "LocalTimeZoneInfo"
|
||||||
ATTR_API_STATE = "StateCode"
|
ATTR_API_STATE = "StateCode"
|
||||||
ATTR_API_STATION = "ReportingArea"
|
ATTR_API_STATION = "ReportingArea"
|
||||||
ATTR_API_STATION_LATITUDE = "Latitude"
|
ATTR_API_STATION_LATITUDE = "Latitude"
|
||||||
|
@ -12,6 +12,7 @@ from pyairnow.errors import AirNowError
|
|||||||
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
from homeassistant.util import dt as dt_util
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
ATTR_API_AQI,
|
ATTR_API_AQI,
|
||||||
@ -26,6 +27,7 @@ from .const import (
|
|||||||
ATTR_API_REPORT_DATE,
|
ATTR_API_REPORT_DATE,
|
||||||
ATTR_API_REPORT_HOUR,
|
ATTR_API_REPORT_HOUR,
|
||||||
ATTR_API_REPORT_TZ,
|
ATTR_API_REPORT_TZ,
|
||||||
|
ATTR_API_REPORT_TZINFO,
|
||||||
ATTR_API_STATE,
|
ATTR_API_STATE,
|
||||||
ATTR_API_STATION,
|
ATTR_API_STATION,
|
||||||
ATTR_API_STATION_LATITUDE,
|
ATTR_API_STATION_LATITUDE,
|
||||||
@ -96,7 +98,9 @@ class AirNowDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
|||||||
# Copy Report Details
|
# Copy Report Details
|
||||||
data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE]
|
data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE]
|
||||||
data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR]
|
data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR]
|
||||||
data[ATTR_API_REPORT_TZ] = obv[ATTR_API_REPORT_TZ]
|
data[ATTR_API_REPORT_TZINFO] = await dt_util.async_get_time_zone(
|
||||||
|
obv[ATTR_API_REPORT_TZ]
|
||||||
|
)
|
||||||
|
|
||||||
# Copy Station Details
|
# Copy Station Details
|
||||||
data[ATTR_API_STATE] = obv[ATTR_API_STATE]
|
data[ATTR_API_STATE] = obv[ATTR_API_STATE]
|
||||||
|
@ -23,7 +23,6 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.typing import StateType
|
from homeassistant.helpers.typing import StateType
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
from homeassistant.util.dt import get_time_zone
|
|
||||||
|
|
||||||
from . import AirNowConfigEntry, AirNowDataUpdateCoordinator
|
from . import AirNowConfigEntry, AirNowDataUpdateCoordinator
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -35,7 +34,7 @@ from .const import (
|
|||||||
ATTR_API_PM25,
|
ATTR_API_PM25,
|
||||||
ATTR_API_REPORT_DATE,
|
ATTR_API_REPORT_DATE,
|
||||||
ATTR_API_REPORT_HOUR,
|
ATTR_API_REPORT_HOUR,
|
||||||
ATTR_API_REPORT_TZ,
|
ATTR_API_REPORT_TZINFO,
|
||||||
ATTR_API_STATION,
|
ATTR_API_STATION,
|
||||||
ATTR_API_STATION_LATITUDE,
|
ATTR_API_STATION_LATITUDE,
|
||||||
ATTR_API_STATION_LONGITUDE,
|
ATTR_API_STATION_LONGITUDE,
|
||||||
@ -84,7 +83,7 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
|
|||||||
f"{data[ATTR_API_REPORT_DATE]} {data[ATTR_API_REPORT_HOUR]}",
|
f"{data[ATTR_API_REPORT_DATE]} {data[ATTR_API_REPORT_HOUR]}",
|
||||||
"%Y-%m-%d %H",
|
"%Y-%m-%d %H",
|
||||||
)
|
)
|
||||||
.replace(tzinfo=get_time_zone(data[ATTR_API_REPORT_TZ]))
|
.replace(tzinfo=data[ATTR_API_REPORT_TZINFO])
|
||||||
.isoformat(),
|
.isoformat(),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
'DateObserved': '2020-12-20',
|
'DateObserved': '2020-12-20',
|
||||||
'HourObserved': 15,
|
'HourObserved': 15,
|
||||||
'Latitude': '**REDACTED**',
|
'Latitude': '**REDACTED**',
|
||||||
'LocalTimeZone': 'PST',
|
'LocalTimeZoneInfo': 'PST',
|
||||||
'Longitude': '**REDACTED**',
|
'Longitude': '**REDACTED**',
|
||||||
'O3': 0.048,
|
'O3': 0.048,
|
||||||
'PM10': 12,
|
'PM10': 12,
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
"""Test AirNow diagnostics."""
|
"""Test AirNow diagnostics."""
|
||||||
|
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from syrupy import SnapshotAssertion
|
from syrupy import SnapshotAssertion
|
||||||
|
|
||||||
@ -18,8 +20,14 @@ async def test_entry_diagnostics(
|
|||||||
snapshot: SnapshotAssertion,
|
snapshot: SnapshotAssertion,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test config entry diagnostics."""
|
"""Test config entry diagnostics."""
|
||||||
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
|
||||||
assert (
|
# Fake LocalTimeZoneInfo
|
||||||
await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
|
with patch(
|
||||||
== snapshot
|
"homeassistant.util.dt.async_get_time_zone",
|
||||||
)
|
return_value="PST",
|
||||||
|
):
|
||||||
|
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||||
|
assert (
|
||||||
|
await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
|
||||||
|
== snapshot
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user