From 9364a40fd215187f7b02140baa51c53bb540da40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Tue, 28 Oct 2025 21:08:19 +0100 Subject: [PATCH] Bump fastdotcom to 0.0.6 (#155354) --- .../components/fastdotcom/coordinator.py | 4 ++-- .../components/fastdotcom/manifest.json | 2 +- homeassistant/components/fastdotcom/sensor.py | 6 ++++-- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/fastdotcom/__init__.py | 7 +++++++ .../fastdotcom/snapshots/test_diagnostics.ambr | 7 ++++++- .../components/fastdotcom/test_coordinator.py | 18 ++++++++++++++++-- .../components/fastdotcom/test_diagnostics.py | 5 ++++- tests/components/fastdotcom/test_init.py | 11 +++++++---- tests/components/fastdotcom/test_sensor.py | 7 +++++-- 11 files changed, 54 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/fastdotcom/coordinator.py b/homeassistant/components/fastdotcom/coordinator.py index 8365692804c3..9748b505fe8c 100644 --- a/homeassistant/components/fastdotcom/coordinator.py +++ b/homeassistant/components/fastdotcom/coordinator.py @@ -15,7 +15,7 @@ from .const import DEFAULT_INTERVAL, DOMAIN, LOGGER type FastdotcomConfigEntry = ConfigEntry[FastdotcomDataUpdateCoordinator] -class FastdotcomDataUpdateCoordinator(DataUpdateCoordinator[float]): +class FastdotcomDataUpdateCoordinator(DataUpdateCoordinator[dict[str, float] | None]): """Class to manage fetching Fast.com data API.""" def __init__(self, hass: HomeAssistant, entry: FastdotcomConfigEntry) -> None: @@ -28,7 +28,7 @@ class FastdotcomDataUpdateCoordinator(DataUpdateCoordinator[float]): update_interval=timedelta(hours=DEFAULT_INTERVAL), ) - async def _async_update_data(self) -> float: + async def _async_update_data(self) -> dict[str, float] | None: """Run an executor job to retrieve Fast.com data.""" try: return await self.hass.async_add_executor_job(fast_com) diff --git a/homeassistant/components/fastdotcom/manifest.json b/homeassistant/components/fastdotcom/manifest.json index a60ce7241c5f..801434eb4005 100644 --- a/homeassistant/components/fastdotcom/manifest.json +++ b/homeassistant/components/fastdotcom/manifest.json @@ -7,6 +7,6 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["fastdotcom"], - "requirements": ["fastdotcom==0.0.3"], + "requirements": ["fastdotcom==0.0.6"], "single_config_entry": true } diff --git a/homeassistant/components/fastdotcom/sensor.py b/homeassistant/components/fastdotcom/sensor.py index 5b6429b07540..b4d732947e4a 100644 --- a/homeassistant/components/fastdotcom/sensor.py +++ b/homeassistant/components/fastdotcom/sensor.py @@ -51,6 +51,8 @@ class SpeedtestSensor(CoordinatorEntity[FastdotcomDataUpdateCoordinator], Sensor @property def native_value( self, - ) -> float: + ) -> float | None: """Return the state of the sensor.""" - return self.coordinator.data + if self.coordinator.data is None: + return None + return self.coordinator.data.get("download_speed") diff --git a/requirements_all.txt b/requirements_all.txt index 706dee435c0a..05319593681d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -950,7 +950,7 @@ faadelays==2023.9.1 # face-recognition==1.2.3 # homeassistant.components.fastdotcom -fastdotcom==0.0.3 +fastdotcom==0.0.6 # homeassistant.components.feedreader feedparser==6.0.12 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7cb680d35b4c..fe5ce2e051a9 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -829,7 +829,7 @@ faadelays==2023.9.1 # face-recognition==1.2.3 # homeassistant.components.fastdotcom -fastdotcom==0.0.3 +fastdotcom==0.0.6 # homeassistant.components.feedreader feedparser==6.0.12 diff --git a/tests/components/fastdotcom/__init__.py b/tests/components/fastdotcom/__init__.py index 4c2ca6301afa..e62b14729172 100644 --- a/tests/components/fastdotcom/__init__.py +++ b/tests/components/fastdotcom/__init__.py @@ -1 +1,8 @@ """Fast.com integration tests.""" + +MOCK_DATA = { + "download_speed": 100.0, + "upload_speed": 50.0, + "unloaded_ping": 15.2, + "loaded_ping": 20.2, +} diff --git a/tests/components/fastdotcom/snapshots/test_diagnostics.ambr b/tests/components/fastdotcom/snapshots/test_diagnostics.ambr index d2b4ca6c55a6..8c5a8cf5dc61 100644 --- a/tests/components/fastdotcom/snapshots/test_diagnostics.ambr +++ b/tests/components/fastdotcom/snapshots/test_diagnostics.ambr @@ -1,6 +1,11 @@ # serializer version: 1 # name: test_get_config_entry_diagnostics dict({ - 'coordinator_data': 50.3, + 'coordinator_data': dict({ + 'download_speed': 100.0, + 'loaded_ping': 20.2, + 'unloaded_ping': 15.2, + 'upload_speed': 50.0, + }), }) # --- diff --git a/tests/components/fastdotcom/test_coordinator.py b/tests/components/fastdotcom/test_coordinator.py index 5c8cb17c7367..b3cffeb1578c 100644 --- a/tests/components/fastdotcom/test_coordinator.py +++ b/tests/components/fastdotcom/test_coordinator.py @@ -24,8 +24,15 @@ async def test_fastdotcom_data_update_coordinator( ) config_entry.add_to_hass(hass) + mock_data = { + "download_speed": 5.0, + "upload_speed": 50.0, + "unloaded_ping": 15.2, + "loaded_ping": 20.2, + } with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=5.0 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=mock_data, ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() @@ -34,8 +41,15 @@ async def test_fastdotcom_data_update_coordinator( assert state is not None assert state.state == "5.0" + mock_data = { + "download_speed": 10.0, + "upload_speed": 20.0, + "unloaded_ping": 5.0, + "loaded_ping": 20.0, + } with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=10.0 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=mock_data, ): freezer.tick(timedelta(hours=DEFAULT_INTERVAL)) async_fire_time_changed(hass) diff --git a/tests/components/fastdotcom/test_diagnostics.py b/tests/components/fastdotcom/test_diagnostics.py index 36b29c8a9f1d..14476578c274 100644 --- a/tests/components/fastdotcom/test_diagnostics.py +++ b/tests/components/fastdotcom/test_diagnostics.py @@ -8,6 +8,8 @@ from homeassistant.components.fastdotcom.const import DEFAULT_NAME, DOMAIN from homeassistant.config_entries import SOURCE_USER from homeassistant.core import HomeAssistant +from . import MOCK_DATA + from tests.common import MockConfigEntry from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.typing import ClientSessionGenerator @@ -32,7 +34,8 @@ async def test_get_config_entry_diagnostics( config_entry.add_to_hass(hass) with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=50.3 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=MOCK_DATA, ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() diff --git a/tests/components/fastdotcom/test_init.py b/tests/components/fastdotcom/test_init.py index ac7708a3c363..2e0fb4f8d7ae 100644 --- a/tests/components/fastdotcom/test_init.py +++ b/tests/components/fastdotcom/test_init.py @@ -11,6 +11,8 @@ from homeassistant.config_entries import ConfigEntryState from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, STATE_UNKNOWN from homeassistant.core import CoreState, HomeAssistant +from . import MOCK_DATA + from tests.common import MockConfigEntry @@ -24,7 +26,8 @@ async def test_unload_entry(hass: HomeAssistant) -> None: config_entry.add_to_hass(hass) with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=5.0 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=MOCK_DATA, ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() @@ -59,13 +62,13 @@ async def test_delayed_speedtest_during_startup( assert state.state is STATE_UNKNOWN with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=5.0 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=MOCK_DATA, ): hass.bus.async_fire(EVENT_HOMEASSISTANT_STARTED) await hass.async_block_till_done() state = hass.states.get("sensor.fast_com_download") assert state is not None - assert state.state == "5.0" - + assert state.state == "100.0" assert config_entry.state is ConfigEntryState.LOADED diff --git a/tests/components/fastdotcom/test_sensor.py b/tests/components/fastdotcom/test_sensor.py index 8f5a81e5205a..df39a6cb55c8 100644 --- a/tests/components/fastdotcom/test_sensor.py +++ b/tests/components/fastdotcom/test_sensor.py @@ -7,6 +7,8 @@ from freezegun.api import FrozenDateTimeFactory from homeassistant.components.fastdotcom.const import DEFAULT_NAME, DOMAIN from homeassistant.core import HomeAssistant +from . import MOCK_DATA + from tests.common import MockConfigEntry @@ -22,11 +24,12 @@ async def test_fastdotcom_data_update_coordinator( config_entry.add_to_hass(hass) with patch( - "homeassistant.components.fastdotcom.coordinator.fast_com", return_value=5.0 + "homeassistant.components.fastdotcom.coordinator.fast_com", + return_value=MOCK_DATA, ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() state = hass.states.get("sensor.fast_com_download") assert state is not None - assert state.state == "5.0" + assert state.state == "100.0"