Skip to content

Commit a6c7bd7

Browse files
authored
Bump google air quality api to 2.0.0 (#158234)
1 parent 470f5a2 commit a6c7bd7

File tree

9 files changed

+37
-29
lines changed

9 files changed

+37
-29
lines changed

homeassistant/components/google_air_quality/config_flow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ async def _validate_input(
5252
description_placeholders: dict[str, str],
5353
) -> bool:
5454
try:
55-
await api.async_air_quality(
55+
await api.async_get_current_conditions(
5656
lat=user_input[CONF_LOCATION][CONF_LATITUDE],
57-
long=user_input[CONF_LOCATION][CONF_LONGITUDE],
57+
lon=user_input[CONF_LOCATION][CONF_LONGITUDE],
5858
)
5959
except GoogleAirQualityApiError as err:
6060
errors["base"] = "cannot_connect"

homeassistant/components/google_air_quality/coordinator.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from google_air_quality_api.api import GoogleAirQualityApi
99
from google_air_quality_api.exceptions import GoogleAirQualityApiError
10-
from google_air_quality_api.model import AirQualityData
10+
from google_air_quality_api.model import AirQualityCurrentConditionsData
1111

1212
from homeassistant.config_entries import ConfigEntry
1313
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE
@@ -23,7 +23,9 @@
2323
type GoogleAirQualityConfigEntry = ConfigEntry[GoogleAirQualityRuntimeData]
2424

2525

26-
class GoogleAirQualityUpdateCoordinator(DataUpdateCoordinator[AirQualityData]):
26+
class GoogleAirQualityUpdateCoordinator(
27+
DataUpdateCoordinator[AirQualityCurrentConditionsData]
28+
):
2729
"""Coordinator for fetching Google AirQuality data."""
2830

2931
config_entry: GoogleAirQualityConfigEntry
@@ -48,10 +50,10 @@ def __init__(
4850
self.lat = subentry.data[CONF_LATITUDE]
4951
self.long = subentry.data[CONF_LONGITUDE]
5052

51-
async def _async_update_data(self) -> AirQualityData:
53+
async def _async_update_data(self) -> AirQualityCurrentConditionsData:
5254
"""Fetch air quality data for this coordinate."""
5355
try:
54-
return await self.client.async_air_quality(self.lat, self.long)
56+
return await self.client.async_get_current_conditions(self.lat, self.long)
5557
except GoogleAirQualityApiError as ex:
5658
_LOGGER.debug("Cannot fetch air quality data: %s", str(ex))
5759
raise UpdateFailed(

homeassistant/components/google_air_quality/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
"iot_class": "cloud_polling",
99
"loggers": ["google_air_quality_api"],
1010
"quality_scale": "bronze",
11-
"requirements": ["google_air_quality_api==1.1.3"]
11+
"requirements": ["google_air_quality_api==2.0.0"]
1212
}

homeassistant/components/google_air_quality/sensor.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from dataclasses import dataclass
55
import logging
66

7-
from google_air_quality_api.model import AirQualityData
7+
from google_air_quality_api.model import AirQualityCurrentConditionsData
88

99
from homeassistant.components.sensor import (
1010
SensorDeviceClass,
@@ -33,15 +33,17 @@
3333
class AirQualitySensorEntityDescription(SensorEntityDescription):
3434
"""Describes Air Quality sensor entity."""
3535

36-
exists_fn: Callable[[AirQualityData], bool] = lambda _: True
37-
options_fn: Callable[[AirQualityData], list[str] | None] = lambda _: None
38-
value_fn: Callable[[AirQualityData], StateType]
39-
native_unit_of_measurement_fn: Callable[[AirQualityData], str | None] = (
36+
exists_fn: Callable[[AirQualityCurrentConditionsData], bool] = lambda _: True
37+
options_fn: Callable[[AirQualityCurrentConditionsData], list[str] | None] = (
4038
lambda _: None
4139
)
42-
translation_placeholders_fn: Callable[[AirQualityData], dict[str, str]] | None = (
43-
None
44-
)
40+
value_fn: Callable[[AirQualityCurrentConditionsData], StateType]
41+
native_unit_of_measurement_fn: Callable[
42+
[AirQualityCurrentConditionsData], str | None
43+
] = lambda _: None
44+
translation_placeholders_fn: (
45+
Callable[[AirQualityCurrentConditionsData], dict[str, str]] | None
46+
) = None
4547

4648

4749
AIR_QUALITY_SENSOR_TYPES: tuple[AirQualitySensorEntityDescription, ...] = (

requirements_all.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

requirements_test_all.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/components/google_air_quality/conftest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import Any
55
from unittest.mock import AsyncMock, Mock, patch
66

7-
from google_air_quality_api.model import AirQualityData
7+
from google_air_quality_api.model import AirQualityCurrentConditionsData
88
import pytest
99

1010
from homeassistant.components.google_air_quality import CONF_REFERRER
@@ -81,7 +81,9 @@ def mock_client_api() -> Generator[Mock]:
8181
),
8282
):
8383
api = mock_api.return_value
84-
api.async_air_quality.return_value = AirQualityData.from_dict(responses)
84+
api.async_get_current_conditions.return_value = (
85+
AirQualityCurrentConditionsData.from_dict(responses)
86+
)
8587

8688
yield api
8789

tests/components/google_air_quality/test_config_flow.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def test_create_entry(
6868
},
6969
)
7070

71-
mock_api.async_air_quality.assert_called_once_with(lat=10.1, long=20.1)
71+
mock_api.async_get_current_conditions.assert_called_once_with(lat=10.1, lon=20.1)
7272

7373
_assert_create_entry_result(result)
7474
assert len(mock_setup_entry.mock_calls) == 1
@@ -101,7 +101,7 @@ async def test_form_with_referrer(
101101
},
102102
)
103103

104-
mock_api.async_air_quality.assert_called_once_with(lat=10.1, long=20.1)
104+
mock_api.async_get_current_conditions.assert_called_once_with(lat=10.1, lon=20.1)
105105

106106
_assert_create_entry_result(result, expected_referrer="test-referrer")
107107
assert len(mock_setup_entry.mock_calls) == 1
@@ -126,7 +126,7 @@ async def test_form_exceptions(
126126
DOMAIN, context={"source": SOURCE_USER}
127127
)
128128

129-
mock_api.async_air_quality.side_effect = api_exception
129+
mock_api.async_get_current_conditions.side_effect = api_exception
130130
result = await hass.config_entries.flow.async_configure(
131131
result["flow_id"],
132132
{
@@ -154,7 +154,7 @@ async def test_form_exceptions(
154154
# FlowResultType.CREATE_ENTRY or FlowResultType.ABORT so
155155
# we can show the config flow is able to recover from an error.
156156

157-
mock_api.async_air_quality.side_effect = None
157+
mock_api.async_get_current_conditions.side_effect = None
158158
result = await hass.config_entries.flow.async_configure(
159159
result["flow_id"],
160160
{
@@ -196,7 +196,7 @@ async def test_form_api_key_already_configured(
196196

197197
assert result["type"] is FlowResultType.ABORT
198198
assert result["reason"] == "already_configured"
199-
assert mock_api.async_air_quality.call_count == 0
199+
assert mock_api.async_get_current_conditions.call_count == 0
200200

201201

202202
async def test_form_location_already_configured(
@@ -224,7 +224,7 @@ async def test_form_location_already_configured(
224224

225225
assert result["type"] is FlowResultType.ABORT
226226
assert result["reason"] == "already_configured"
227-
assert mock_api.async_air_quality.call_count == 0
227+
assert mock_api.async_get_current_conditions.call_count == 0
228228

229229

230230
async def test_form_not_already_configured(
@@ -251,7 +251,9 @@ async def test_form_not_already_configured(
251251
},
252252
)
253253

254-
mock_api.async_air_quality.assert_called_once_with(lat=10.1002, long=20.0998)
254+
mock_api.async_get_current_conditions.assert_called_once_with(
255+
lat=10.1002, lon=20.0998
256+
)
255257

256258
assert result["type"] is FlowResultType.CREATE_ENTRY
257259
assert result["title"] == "Google Air Quality"
@@ -281,7 +283,7 @@ async def test_subentry_flow(
281283
await hass.async_block_till_done()
282284

283285
# After initial setup for 1 subentry, each API is called once
284-
assert mock_api.async_air_quality.call_count == 1
286+
assert mock_api.async_get_current_conditions.call_count == 1
285287

286288
result = await hass.config_entries.subentries.async_init(
287289
(mock_config_entry.entry_id, "location"),
@@ -313,7 +315,7 @@ async def test_subentry_flow(
313315
# Initial setup: 1 of each API call
314316
# Subentry flow validation: 1 current conditions call
315317
# Reload with 2 subentries: 2 of each API call
316-
assert mock_api.async_air_quality.call_count == 1 + 1 + 2
318+
assert mock_api.async_get_current_conditions.call_count == 1 + 1 + 2
317319

318320
entry = hass.config_entries.async_get_entry(mock_config_entry.entry_id)
319321
assert len(entry.subentries) == 2

tests/components/google_air_quality/test_init.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async def test_config_not_ready(
3333
) -> None:
3434
"""Test for setup failure if an API call fails."""
3535
mock_config_entry.add_to_hass(hass)
36-
mock_api.async_air_quality.side_effect = GoogleAirQualityApiError()
36+
mock_api.async_get_current_conditions.side_effect = GoogleAirQualityApiError()
3737

3838
await hass.config_entries.async_setup(mock_config_entry.entry_id)
3939

0 commit comments

Comments
 (0)