From ebe7a4747d35a48269fd404a996b85295999a8af Mon Sep 17 00:00:00 2001 From: G Johansson Date: Thu, 4 Jul 2024 21:09:19 +0200 Subject: [PATCH] Bump pytrafikverket to 1.0.0 (#121210) * Update all related files and tests to new version * Fix missed modal * Bump requirements --- .../trafikverket_camera/config_flow.py | 9 +-- .../trafikverket_camera/coordinator.py | 7 +- .../trafikverket_camera/manifest.json | 2 +- .../trafikverket_ferry/coordinator.py | 4 +- .../trafikverket_ferry/manifest.json | 2 +- .../trafikverket_train/coordinator.py | 16 ++--- .../trafikverket_train/manifest.json | 2 +- .../coordinator.py | 7 +- .../trafikverket_weatherstation/manifest.json | 2 +- .../trafikverket_weatherstation/sensor.py | 4 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- .../trafikverket_camera/conftest.py | 24 ++++--- .../trafikverket_camera/test_binary_sensor.py | 4 +- .../trafikverket_camera/test_camera.py | 4 +- .../trafikverket_camera/test_config_flow.py | 10 +-- .../trafikverket_camera/test_coordinator.py | 8 +-- .../trafikverket_camera/test_init.py | 14 ++-- .../trafikverket_camera/test_recorder.py | 4 +- .../trafikverket_camera/test_sensor.py | 4 +- .../components/trafikverket_ferry/conftest.py | 71 +++++++++++-------- .../trafikverket_ferry/test_coordinator.py | 4 +- .../trafikverket_ferry/test_init.py | 10 ++- .../trafikverket_ferry/test_sensor.py | 4 +- .../components/trafikverket_train/conftest.py | 40 +++++------ .../trafikverket_train/test_config_flow.py | 6 +- .../trafikverket_train/test_init.py | 12 ++-- .../trafikverket_train/test_sensor.py | 14 ++-- 28 files changed, 158 insertions(+), 134 deletions(-) diff --git a/homeassistant/components/trafikverket_camera/config_flow.py b/homeassistant/components/trafikverket_camera/config_flow.py index 1c2e025ece9..501ccb7e0e0 100644 --- a/homeassistant/components/trafikverket_camera/config_flow.py +++ b/homeassistant/components/trafikverket_camera/config_flow.py @@ -6,7 +6,8 @@ from collections.abc import Mapping from typing import Any from pytrafikverket.exceptions import InvalidAuthentication, NoCameraFound, UnknownError -from pytrafikverket.trafikverket_camera import CameraInfo, TrafikverketCamera +from pytrafikverket.models import CameraInfoModel +from pytrafikverket.trafikverket_camera import TrafikverketCamera import voluptuous as vol from homeassistant.config_entries import ConfigEntry, ConfigFlow, ConfigFlowResult @@ -29,15 +30,15 @@ class TVCameraConfigFlow(ConfigFlow, domain=DOMAIN): VERSION = 3 entry: ConfigEntry | None - cameras: list[CameraInfo] + cameras: list[CameraInfoModel] api_key: str async def validate_input( self, sensor_api: str, location: str - ) -> tuple[dict[str, str], list[CameraInfo] | None]: + ) -> tuple[dict[str, str], list[CameraInfoModel] | None]: """Validate input from user input.""" errors: dict[str, str] = {} - cameras: list[CameraInfo] | None = None + cameras: list[CameraInfoModel] | None = None web_session = async_get_clientsession(self.hass) camera_api = TrafikverketCamera(web_session, sensor_api) diff --git a/homeassistant/components/trafikverket_camera/coordinator.py b/homeassistant/components/trafikverket_camera/coordinator.py index cceea9afc5c..8ead479fd1c 100644 --- a/homeassistant/components/trafikverket_camera/coordinator.py +++ b/homeassistant/components/trafikverket_camera/coordinator.py @@ -14,7 +14,8 @@ from pytrafikverket.exceptions import ( NoCameraFound, UnknownError, ) -from pytrafikverket.trafikverket_camera import CameraInfo, TrafikverketCamera +from pytrafikverket.models import CameraInfoModel +from pytrafikverket.trafikverket_camera import TrafikverketCamera from homeassistant.const import CONF_API_KEY, CONF_ID from homeassistant.core import HomeAssistant @@ -35,7 +36,7 @@ TIME_BETWEEN_UPDATES = timedelta(minutes=5) class CameraData: """Dataclass for Camera data.""" - data: CameraInfo + data: CameraInfoModel image: bytes | None @@ -60,7 +61,7 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[CameraData]): async def _async_update_data(self) -> CameraData: """Fetch data from Trafikverket.""" - camera_data: CameraInfo + camera_data: CameraInfoModel image: bytes | None = None try: camera_data = await self._camera_api.async_get_camera(self._id) diff --git a/homeassistant/components/trafikverket_camera/manifest.json b/homeassistant/components/trafikverket_camera/manifest.json index ac8570d8a02..f424f47f7c5 100644 --- a/homeassistant/components/trafikverket_camera/manifest.json +++ b/homeassistant/components/trafikverket_camera/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/trafikverket_camera", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==0.3.10"] + "requirements": ["pytrafikverket==1.0.0"] } diff --git a/homeassistant/components/trafikverket_ferry/coordinator.py b/homeassistant/components/trafikverket_ferry/coordinator.py index 6cfed88b79c..fdde6766185 100644 --- a/homeassistant/components/trafikverket_ferry/coordinator.py +++ b/homeassistant/components/trafikverket_ferry/coordinator.py @@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, Any from pytrafikverket import TrafikverketFerry from pytrafikverket.exceptions import InvalidAuthentication, NoFerryFound -from pytrafikverket.trafikverket_ferry import FerryStop +from pytrafikverket.models import FerryStopModel from homeassistant.const import CONF_API_KEY, CONF_WEEKDAY, WEEKDAYS from homeassistant.core import HomeAssistant @@ -86,7 +86,7 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator): try: routedata: list[ - FerryStop + FerryStopModel ] = await self._ferry_api.async_get_next_ferry_stops( self._from, self._to, when, 3 ) diff --git a/homeassistant/components/trafikverket_ferry/manifest.json b/homeassistant/components/trafikverket_ferry/manifest.json index 99feccf983f..0b7b056754c 100644 --- a/homeassistant/components/trafikverket_ferry/manifest.json +++ b/homeassistant/components/trafikverket_ferry/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/trafikverket_ferry", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==0.3.10"] + "requirements": ["pytrafikverket==1.0.0"] } diff --git a/homeassistant/components/trafikverket_train/coordinator.py b/homeassistant/components/trafikverket_train/coordinator.py index c202473da79..66ef3e6a1d2 100644 --- a/homeassistant/components/trafikverket_train/coordinator.py +++ b/homeassistant/components/trafikverket_train/coordinator.py @@ -13,7 +13,7 @@ from pytrafikverket.exceptions import ( NoTrainAnnouncementFound, UnknownError, ) -from pytrafikverket.trafikverket_train import StationInfo, TrainStop +from pytrafikverket.models import StationInfoModel, TrainStopModel from homeassistant.const import CONF_API_KEY, CONF_WEEKDAY from homeassistant.core import HomeAssistant @@ -35,7 +35,7 @@ class TrainData: departure_time: datetime | None departure_state: str - cancelled: bool + cancelled: bool | None delayed_time: int | None planned_time: datetime | None estimated_time: datetime | None @@ -73,8 +73,8 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[TrainData]): def __init__( self, hass: HomeAssistant, - to_station: StationInfo, - from_station: StationInfo, + to_station: StationInfoModel, + from_station: StationInfoModel, ) -> None: """Initialize the Trafikverket coordinator.""" super().__init__( @@ -86,8 +86,8 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[TrainData]): self._train_api = TrafikverketTrain( async_get_clientsession(hass), self.config_entry.data[CONF_API_KEY] ) - self.from_station: StationInfo = from_station - self.to_station: StationInfo = to_station + self.from_station: StationInfoModel = from_station + self.to_station: StationInfoModel = to_station self._time: time | None = dt_util.parse_time(self.config_entry.data[CONF_TIME]) self._weekdays: list[str] = self.config_entry.data[CONF_WEEKDAY] self._filter_product: str | None = self.config_entry.options.get( @@ -98,8 +98,8 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[TrainData]): """Fetch data from Trafikverket.""" when = dt_util.now() - state: TrainStop | None = None - states: list[TrainStop] | None = None + state: TrainStopModel | None = None + states: list[TrainStopModel] | None = None if self._time: departure_day = next_departuredate(self._weekdays) when = datetime.combine( diff --git a/homeassistant/components/trafikverket_train/manifest.json b/homeassistant/components/trafikverket_train/manifest.json index 6a09821f729..222b23dbe9a 100644 --- a/homeassistant/components/trafikverket_train/manifest.json +++ b/homeassistant/components/trafikverket_train/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/trafikverket_train", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==0.3.10"] + "requirements": ["pytrafikverket==1.0.0"] } diff --git a/homeassistant/components/trafikverket_weatherstation/coordinator.py b/homeassistant/components/trafikverket_weatherstation/coordinator.py index e0319b1b932..22ecf6fc1b5 100644 --- a/homeassistant/components/trafikverket_weatherstation/coordinator.py +++ b/homeassistant/components/trafikverket_weatherstation/coordinator.py @@ -11,7 +11,8 @@ from pytrafikverket.exceptions import ( MultipleWeatherStationsFound, NoWeatherStationFound, ) -from pytrafikverket.trafikverket_weather import TrafikverketWeather, WeatherStationInfo +from pytrafikverket.models import WeatherStationInfoModel +from pytrafikverket.trafikverket_weather import TrafikverketWeather from homeassistant.const import CONF_API_KEY from homeassistant.core import HomeAssistant @@ -28,7 +29,7 @@ _LOGGER = logging.getLogger(__name__) TIME_BETWEEN_UPDATES = timedelta(minutes=10) -class TVDataUpdateCoordinator(DataUpdateCoordinator[WeatherStationInfo]): +class TVDataUpdateCoordinator(DataUpdateCoordinator[WeatherStationInfoModel]): """A Sensibo Data Update Coordinator.""" config_entry: TVWeatherConfigEntry @@ -46,7 +47,7 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[WeatherStationInfo]): ) self._station = self.config_entry.data[CONF_STATION] - async def _async_update_data(self) -> WeatherStationInfo: + async def _async_update_data(self) -> WeatherStationInfoModel: """Fetch data from Trafikverket.""" try: weatherdata = await self._weather_api.async_get_weather(self._station) diff --git a/homeassistant/components/trafikverket_weatherstation/manifest.json b/homeassistant/components/trafikverket_weatherstation/manifest.json index 430d240761f..85838726178 100644 --- a/homeassistant/components/trafikverket_weatherstation/manifest.json +++ b/homeassistant/components/trafikverket_weatherstation/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/trafikverket_weatherstation", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==0.3.10"] + "requirements": ["pytrafikverket==1.0.0"] } diff --git a/homeassistant/components/trafikverket_weatherstation/sensor.py b/homeassistant/components/trafikverket_weatherstation/sensor.py index 4bd14448546..36c6350280e 100644 --- a/homeassistant/components/trafikverket_weatherstation/sensor.py +++ b/homeassistant/components/trafikverket_weatherstation/sensor.py @@ -6,7 +6,7 @@ from collections.abc import Callable from dataclasses import dataclass from datetime import datetime -from pytrafikverket.trafikverket_weather import WeatherStationInfo +from pytrafikverket.models import WeatherStationInfoModel from homeassistant.components.sensor import ( SensorDeviceClass, @@ -47,7 +47,7 @@ PRECIPITATION_TYPE = [ class TrafikverketSensorEntityDescription(SensorEntityDescription): """Describes Trafikverket sensor entity.""" - value_fn: Callable[[WeatherStationInfo], StateType | datetime] + value_fn: Callable[[WeatherStationInfoModel], StateType | datetime] def add_utc_timezone(date_time: datetime | None) -> datetime | None: diff --git a/requirements_all.txt b/requirements_all.txt index 29d7b2c7e97..79594c458c1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2358,7 +2358,7 @@ pytradfri[async]==9.0.1 # homeassistant.components.trafikverket_ferry # homeassistant.components.trafikverket_train # homeassistant.components.trafikverket_weatherstation -pytrafikverket==0.3.10 +pytrafikverket==1.0.0 # homeassistant.components.v2c pytrydan==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index dfd9bca4a07..be3fe27ddbe 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1843,7 +1843,7 @@ pytradfri[async]==9.0.1 # homeassistant.components.trafikverket_ferry # homeassistant.components.trafikverket_train # homeassistant.components.trafikverket_weatherstation -pytrafikverket==0.3.10 +pytrafikverket==1.0.0 # homeassistant.components.v2c pytrydan==0.7.0 diff --git a/tests/components/trafikverket_camera/conftest.py b/tests/components/trafikverket_camera/conftest.py index 61eebb623b2..cef85af2228 100644 --- a/tests/components/trafikverket_camera/conftest.py +++ b/tests/components/trafikverket_camera/conftest.py @@ -6,7 +6,7 @@ from datetime import datetime from unittest.mock import patch import pytest -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.components.trafikverket_camera.const import DOMAIN from homeassistant.config_entries import SOURCE_USER @@ -21,7 +21,9 @@ from tests.test_util.aiohttp import AiohttpClientMocker @pytest.fixture(name="load_int") async def load_integration_from_entry( - hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, get_camera: CameraInfo + hass: HomeAssistant, + aioclient_mock: AiohttpClientMocker, + get_camera: CameraInfoModel, ) -> MockConfigEntry: """Set up the Trafikverket Camera integration in Home Assistant.""" aioclient_mock.get( @@ -51,10 +53,10 @@ async def load_integration_from_entry( @pytest.fixture(name="get_camera") -def fixture_get_camera() -> CameraInfo: +def fixture_get_camera() -> CameraInfoModel: """Construct Camera Mock.""" - return CameraInfo( + return CameraInfoModel( camera_name="Test Camera", camera_id="1234", active=True, @@ -72,10 +74,10 @@ def fixture_get_camera() -> CameraInfo: @pytest.fixture(name="get_camera2") -def fixture_get_camera2() -> CameraInfo: +def fixture_get_camera2() -> CameraInfoModel: """Construct Camera Mock 2.""" - return CameraInfo( + return CameraInfoModel( camera_name="Test Camera2", camera_id="5678", active=True, @@ -93,11 +95,11 @@ def fixture_get_camera2() -> CameraInfo: @pytest.fixture(name="get_cameras") -def fixture_get_cameras() -> CameraInfo: +def fixture_get_cameras() -> CameraInfoModel: """Construct Camera Mock with multiple cameras.""" return [ - CameraInfo( + CameraInfoModel( camera_name="Test Camera", camera_id="1234", active=True, @@ -112,7 +114,7 @@ def fixture_get_cameras() -> CameraInfo: status="Running", camera_type="Road", ), - CameraInfo( + CameraInfoModel( camera_name="Test Camera2", camera_id="5678", active=True, @@ -131,10 +133,10 @@ def fixture_get_cameras() -> CameraInfo: @pytest.fixture(name="get_camera_no_location") -def fixture_get_camera_no_location() -> CameraInfo: +def fixture_get_camera_no_location() -> CameraInfoModel: """Construct Camera Mock.""" - return CameraInfo( + return CameraInfoModel( camera_name="Test Camera", camera_id="1234", active=True, diff --git a/tests/components/trafikverket_camera/test_binary_sensor.py b/tests/components/trafikverket_camera/test_binary_sensor.py index 6c694f76233..6750c05772b 100644 --- a/tests/components/trafikverket_camera/test_binary_sensor.py +++ b/tests/components/trafikverket_camera/test_binary_sensor.py @@ -3,7 +3,7 @@ from __future__ import annotations import pytest -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.config_entries import ConfigEntry from homeassistant.const import STATE_ON @@ -14,7 +14,7 @@ from homeassistant.core import HomeAssistant async def test_sensor( hass: HomeAssistant, load_int: ConfigEntry, - get_camera: CameraInfo, + get_camera: CameraInfoModel, ) -> None: """Test the Trafikverket Camera binary sensor.""" diff --git a/tests/components/trafikverket_camera/test_camera.py b/tests/components/trafikverket_camera/test_camera.py index 1bf742b5f08..51d4563c19b 100644 --- a/tests/components/trafikverket_camera/test_camera.py +++ b/tests/components/trafikverket_camera/test_camera.py @@ -7,7 +7,7 @@ from unittest.mock import patch from freezegun.api import FrozenDateTimeFactory import pytest -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.components.camera import async_get_image from homeassistant.config_entries import ConfigEntry @@ -24,7 +24,7 @@ async def test_camera( freezer: FrozenDateTimeFactory, monkeypatch: pytest.MonkeyPatch, aioclient_mock: AiohttpClientMocker, - get_camera: CameraInfo, + get_camera: CameraInfoModel, ) -> None: """Test the Trafikverket Camera sensor.""" state1 = hass.states.get("camera.test_camera") diff --git a/tests/components/trafikverket_camera/test_config_flow.py b/tests/components/trafikverket_camera/test_config_flow.py index 8162db076fa..2e9e34f4c35 100644 --- a/tests/components/trafikverket_camera/test_config_flow.py +++ b/tests/components/trafikverket_camera/test_config_flow.py @@ -6,7 +6,7 @@ from unittest.mock import patch import pytest from pytrafikverket.exceptions import InvalidAuthentication, NoCameraFound, UnknownError -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant import config_entries from homeassistant.components.trafikverket_camera.const import DOMAIN @@ -17,7 +17,7 @@ from homeassistant.data_entry_flow import FlowResultType from tests.common import MockConfigEntry -async def test_form(hass: HomeAssistant, get_camera: CameraInfo) -> None: +async def test_form(hass: HomeAssistant, get_camera: CameraInfoModel) -> None: """Test we get the form.""" result = await hass.config_entries.flow.async_init( @@ -56,7 +56,9 @@ async def test_form(hass: HomeAssistant, get_camera: CameraInfo) -> None: async def test_form_multiple_cameras( - hass: HomeAssistant, get_cameras: list[CameraInfo], get_camera2: CameraInfo + hass: HomeAssistant, + get_cameras: list[CameraInfoModel], + get_camera2: CameraInfoModel, ) -> None: """Test we get the form with multiple cameras.""" @@ -108,7 +110,7 @@ async def test_form_multiple_cameras( async def test_form_no_location_data( - hass: HomeAssistant, get_camera_no_location: CameraInfo + hass: HomeAssistant, get_camera_no_location: CameraInfoModel ) -> None: """Test we get the form.""" diff --git a/tests/components/trafikverket_camera/test_coordinator.py b/tests/components/trafikverket_camera/test_coordinator.py index 3f37ad05575..f50ab56724e 100644 --- a/tests/components/trafikverket_camera/test_coordinator.py +++ b/tests/components/trafikverket_camera/test_coordinator.py @@ -11,9 +11,9 @@ from pytrafikverket.exceptions import ( NoCameraFound, UnknownError, ) +from pytrafikverket.models import CameraInfoModel from homeassistant.components.trafikverket_camera.const import DOMAIN -from homeassistant.components.trafikverket_camera.coordinator import CameraData from homeassistant.config_entries import SOURCE_USER, ConfigEntryState from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryAuthFailed @@ -28,7 +28,7 @@ from tests.test_util.aiohttp import AiohttpClientMocker async def test_coordinator( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, - get_camera: CameraData, + get_camera: CameraInfoModel, ) -> None: """Test the Trafikverket Camera coordinator.""" aioclient_mock.get( @@ -86,7 +86,7 @@ async def test_coordinator( async def test_coordinator_failed_update( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, - get_camera: CameraData, + get_camera: CameraInfoModel, sideeffect: str, p_error: Exception, entry_state: str, @@ -123,7 +123,7 @@ async def test_coordinator_failed_update( async def test_coordinator_failed_get_image( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, - get_camera: CameraData, + get_camera: CameraInfoModel, ) -> None: """Test the Trafikverket Camera coordinator.""" aioclient_mock.get( diff --git a/tests/components/trafikverket_camera/test_init.py b/tests/components/trafikverket_camera/test_init.py index f21d36fda27..aaa4c3cfed7 100644 --- a/tests/components/trafikverket_camera/test_init.py +++ b/tests/components/trafikverket_camera/test_init.py @@ -7,7 +7,7 @@ from unittest.mock import patch import pytest from pytrafikverket.exceptions import UnknownError -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.components.trafikverket_camera import async_migrate_entry from homeassistant.components.trafikverket_camera.const import DOMAIN @@ -23,7 +23,7 @@ from tests.test_util.aiohttp import AiohttpClientMocker async def test_setup_entry( hass: HomeAssistant, - get_camera: CameraInfo, + get_camera: CameraInfoModel, aioclient_mock: AiohttpClientMocker, ) -> None: """Test setup entry.""" @@ -55,7 +55,7 @@ async def test_setup_entry( async def test_unload_entry( hass: HomeAssistant, - get_camera: CameraInfo, + get_camera: CameraInfoModel, aioclient_mock: AiohttpClientMocker, ) -> None: """Test unload an entry.""" @@ -89,7 +89,7 @@ async def test_unload_entry( async def test_migrate_entry( hass: HomeAssistant, - get_camera: CameraInfo, + get_camera: CameraInfoModel, aioclient_mock: AiohttpClientMocker, ) -> None: """Test migrate entry to version 2.""" @@ -136,7 +136,7 @@ async def test_migrate_entry( ) async def test_migrate_entry_fails_with_error( hass: HomeAssistant, - get_camera: CameraInfo, + get_camera: CameraInfoModel, aioclient_mock: AiohttpClientMocker, version: int, unique_id: str, @@ -205,7 +205,7 @@ async def test_migrate_entry_fails_no_id( ) entry.add_to_hass(hass) - _camera = CameraInfo( + _camera = CameraInfoModel( camera_name="Test_camera", camera_id=None, active=True, @@ -236,7 +236,7 @@ async def test_migrate_entry_fails_no_id( async def test_no_migration_needed( hass: HomeAssistant, - get_camera: CameraInfo, + get_camera: CameraInfoModel, aioclient_mock: AiohttpClientMocker, ) -> None: """Test migrate entry fails, camera returns no id.""" diff --git a/tests/components/trafikverket_camera/test_recorder.py b/tests/components/trafikverket_camera/test_recorder.py index 23ebd3f2189..d9778ab851a 100644 --- a/tests/components/trafikverket_camera/test_recorder.py +++ b/tests/components/trafikverket_camera/test_recorder.py @@ -3,7 +3,7 @@ from __future__ import annotations import pytest -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.components.recorder import Recorder from homeassistant.components.recorder.history import get_significant_states @@ -22,7 +22,7 @@ async def test_exclude_attributes( load_int: ConfigEntry, monkeypatch: pytest.MonkeyPatch, aioclient_mock: AiohttpClientMocker, - get_camera: CameraInfo, + get_camera: CameraInfoModel, ) -> None: """Test camera has description and location excluded from recording.""" state1 = hass.states.get("camera.test_camera") diff --git a/tests/components/trafikverket_camera/test_sensor.py b/tests/components/trafikverket_camera/test_sensor.py index 18ccbe56070..0f4ef02a850 100644 --- a/tests/components/trafikverket_camera/test_sensor.py +++ b/tests/components/trafikverket_camera/test_sensor.py @@ -3,7 +3,7 @@ from __future__ import annotations import pytest -from pytrafikverket.trafikverket_camera import CameraInfo +from pytrafikverket.models import CameraInfoModel from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant @@ -13,7 +13,7 @@ from homeassistant.core import HomeAssistant async def test_sensor( hass: HomeAssistant, load_int: ConfigEntry, - get_camera: CameraInfo, + get_camera: CameraInfoModel, ) -> None: """Test the Trafikverket Camera sensor.""" diff --git a/tests/components/trafikverket_ferry/conftest.py b/tests/components/trafikverket_ferry/conftest.py index 3491b8474af..99f3ad10636 100644 --- a/tests/components/trafikverket_ferry/conftest.py +++ b/tests/components/trafikverket_ferry/conftest.py @@ -6,7 +6,7 @@ from datetime import datetime, timedelta from unittest.mock import patch import pytest -from pytrafikverket.trafikverket_ferry import FerryStop +from pytrafikverket.models import FerryStopModel from homeassistant.components.trafikverket_ferry.const import DOMAIN from homeassistant.config_entries import SOURCE_USER @@ -20,7 +20,7 @@ from tests.common import MockConfigEntry @pytest.fixture(name="load_int") async def load_integration_from_entry( - hass: HomeAssistant, get_ferries: list[FerryStop] + hass: HomeAssistant, get_ferries: list[FerryStopModel] ) -> MockConfigEntry: """Set up the Trafikverket Ferry integration in Home Assistant.""" config_entry = MockConfigEntry( @@ -44,40 +44,51 @@ async def load_integration_from_entry( @pytest.fixture(name="get_ferries") -def fixture_get_ferries() -> list[FerryStop]: +def fixture_get_ferries() -> list[FerryStopModel]: """Construct FerryStop Mock.""" - depart1 = FerryStop( - "13", - False, - datetime(dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC), - [""], - "0", - datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), - "Harbor 1", - "Harbor 2", + depart1 = FerryStopModel( + ferry_stop_id="13", + ferry_stop_name="Harbor1lane", + short_name="Harle", + deleted=False, + departure_time=datetime( + dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC + ), + other_information=[""], + deviation_id="0", + modified_time=datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), + from_harbor_name="Harbor 1", + to_harbor_name="Harbor 2", + type_name="Turnaround", ) - depart2 = FerryStop( - "14", - False, - datetime(dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC) + depart2 = FerryStopModel( + ferry_stop_id="14", + ferry_stop_name="Harbor1lane", + short_name="Harle", + deleted=False, + departure_time=datetime(dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC) + timedelta(minutes=15), - [""], - "0", - datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), - "Harbor 1", - "Harbor 2", + other_information=[""], + deviation_id="0", + modified_time=datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), + from_harbor_name="Harbor 1", + to_harbor_name="Harbor 2", + type_name="Turnaround", ) - depart3 = FerryStop( - "15", - False, - datetime(dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC) + depart3 = FerryStopModel( + ferry_stop_id="15", + ferry_stop_name="Harbor1lane", + short_name="Harle", + deleted=False, + departure_time=datetime(dt_util.now().year + 1, 5, 1, 12, 0, tzinfo=dt_util.UTC) + timedelta(minutes=30), - [""], - "0", - datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), - "Harbor 1", - "Harbor 2", + other_information=[""], + deviation_id="0", + modified_time=datetime(dt_util.now().year, 5, 1, 12, 0, tzinfo=dt_util.UTC), + from_harbor_name="Harbor 1", + to_harbor_name="Harbor 2", + type_name="Turnaround", ) return [depart1, depart2, depart3] diff --git a/tests/components/trafikverket_ferry/test_coordinator.py b/tests/components/trafikverket_ferry/test_coordinator.py index ef6329bfd82..ae9a8fc3626 100644 --- a/tests/components/trafikverket_ferry/test_coordinator.py +++ b/tests/components/trafikverket_ferry/test_coordinator.py @@ -8,7 +8,7 @@ from unittest.mock import patch from freezegun.api import FrozenDateTimeFactory import pytest from pytrafikverket.exceptions import InvalidAuthentication, NoFerryFound -from pytrafikverket.trafikverket_ferry import FerryStop +from pytrafikverket.models import FerryStopModel from homeassistant.components.trafikverket_ferry.const import DOMAIN from homeassistant.components.trafikverket_ferry.coordinator import next_departuredate @@ -27,7 +27,7 @@ async def test_coordinator( hass: HomeAssistant, freezer: FrozenDateTimeFactory, monkeypatch: pytest.MonkeyPatch, - get_ferries: list[FerryStop], + get_ferries: list[FerryStopModel], ) -> None: """Test the Trafikverket Ferry coordinator.""" entry = MockConfigEntry( diff --git a/tests/components/trafikverket_ferry/test_init.py b/tests/components/trafikverket_ferry/test_init.py index 22ada7e0f40..827711363ff 100644 --- a/tests/components/trafikverket_ferry/test_init.py +++ b/tests/components/trafikverket_ferry/test_init.py @@ -4,7 +4,7 @@ from __future__ import annotations from unittest.mock import patch -from pytrafikverket.trafikverket_ferry import FerryStop +from pytrafikverket.models import FerryStopModel from homeassistant.components.trafikverket_ferry.const import DOMAIN from homeassistant.config_entries import SOURCE_USER, ConfigEntryState @@ -15,7 +15,9 @@ from . import ENTRY_CONFIG from tests.common import MockConfigEntry -async def test_setup_entry(hass: HomeAssistant, get_ferries: list[FerryStop]) -> None: +async def test_setup_entry( + hass: HomeAssistant, get_ferries: list[FerryStopModel] +) -> None: """Test setup entry.""" entry = MockConfigEntry( domain=DOMAIN, @@ -37,7 +39,9 @@ async def test_setup_entry(hass: HomeAssistant, get_ferries: list[FerryStop]) -> assert len(mock_tvt_ferry.mock_calls) == 1 -async def test_unload_entry(hass: HomeAssistant, get_ferries: list[FerryStop]) -> None: +async def test_unload_entry( + hass: HomeAssistant, get_ferries: list[FerryStopModel] +) -> None: """Test unload an entry.""" entry = MockConfigEntry( domain=DOMAIN, diff --git a/tests/components/trafikverket_ferry/test_sensor.py b/tests/components/trafikverket_ferry/test_sensor.py index fc8fa557714..bc5510b0b1d 100644 --- a/tests/components/trafikverket_ferry/test_sensor.py +++ b/tests/components/trafikverket_ferry/test_sensor.py @@ -6,7 +6,7 @@ from datetime import timedelta from unittest.mock import patch import pytest -from pytrafikverket.trafikverket_ferry import FerryStop +from pytrafikverket.models import FerryStopModel from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant @@ -19,7 +19,7 @@ async def test_sensor( hass: HomeAssistant, load_int: ConfigEntry, monkeypatch: pytest.MonkeyPatch, - get_ferries: list[FerryStop], + get_ferries: list[FerryStopModel], ) -> None: """Test the Trafikverket Ferry sensor.""" state1 = hass.states.get("sensor.harbor1_departure_from") diff --git a/tests/components/trafikverket_train/conftest.py b/tests/components/trafikverket_train/conftest.py index 7221d96bae2..4915635e316 100644 --- a/tests/components/trafikverket_train/conftest.py +++ b/tests/components/trafikverket_train/conftest.py @@ -6,7 +6,7 @@ from datetime import datetime, timedelta from unittest.mock import patch import pytest -from pytrafikverket.trafikverket_train import TrainStop +from pytrafikverket.models import TrainStopModel from homeassistant.components.trafikverket_train.const import DOMAIN from homeassistant.config_entries import SOURCE_USER @@ -21,8 +21,8 @@ from tests.common import MockConfigEntry @pytest.fixture(name="load_int") async def load_integration_from_entry( hass: HomeAssistant, - get_trains: list[TrainStop], - get_train_stop: TrainStop, + get_trains: list[TrainStopModel], + get_train_stop: TrainStopModel, ) -> MockConfigEntry: """Set up the Trafikverket Train integration in Home Assistant.""" @@ -69,11 +69,11 @@ async def load_integration_from_entry( @pytest.fixture(name="get_trains") -def fixture_get_trains() -> list[TrainStop]: +def fixture_get_trains() -> list[TrainStopModel]: """Construct TrainStop Mock.""" - depart1 = TrainStop( - id=13, + depart1 = TrainStopModel( + train_stop_id=13, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), estimated_time_at_location=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), @@ -83,8 +83,8 @@ def fixture_get_trains() -> list[TrainStop]: modified_time=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), product_description=["Regionaltåg"], ) - depart2 = TrainStop( - id=14, + depart2 = TrainStopModel( + train_stop_id=14, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC) + timedelta(minutes=15), @@ -95,8 +95,8 @@ def fixture_get_trains() -> list[TrainStop]: modified_time=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), product_description=["Regionaltåg"], ) - depart3 = TrainStop( - id=15, + depart3 = TrainStopModel( + train_stop_id=15, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC) + timedelta(minutes=30), @@ -112,11 +112,11 @@ def fixture_get_trains() -> list[TrainStop]: @pytest.fixture(name="get_trains_next") -def fixture_get_trains_next() -> list[TrainStop]: +def fixture_get_trains_next() -> list[TrainStopModel]: """Construct TrainStop Mock.""" - depart1 = TrainStop( - id=13, + depart1 = TrainStopModel( + train_stop_id=13, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 17, 0, tzinfo=dt_util.UTC), estimated_time_at_location=datetime(2023, 5, 1, 17, 0, tzinfo=dt_util.UTC), @@ -126,8 +126,8 @@ def fixture_get_trains_next() -> list[TrainStop]: modified_time=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), product_description=["Regionaltåg"], ) - depart2 = TrainStop( - id=14, + depart2 = TrainStopModel( + train_stop_id=14, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 17, 0, tzinfo=dt_util.UTC) + timedelta(minutes=15), @@ -138,8 +138,8 @@ def fixture_get_trains_next() -> list[TrainStop]: modified_time=datetime(2023, 5, 1, 12, 0, tzinfo=dt_util.UTC), product_description=["Regionaltåg"], ) - depart3 = TrainStop( - id=15, + depart3 = TrainStopModel( + train_stop_id=15, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 17, 0, tzinfo=dt_util.UTC) + timedelta(minutes=30), @@ -155,11 +155,11 @@ def fixture_get_trains_next() -> list[TrainStop]: @pytest.fixture(name="get_train_stop") -def fixture_get_train_stop() -> TrainStop: +def fixture_get_train_stop() -> TrainStopModel: """Construct TrainStop Mock.""" - return TrainStop( - id=13, + return TrainStopModel( + train_stop_id=13, canceled=False, advertised_time_at_location=datetime(2023, 5, 1, 11, 0, tzinfo=dt_util.UTC), estimated_time_at_location=None, diff --git a/tests/components/trafikverket_train/test_config_flow.py b/tests/components/trafikverket_train/test_config_flow.py index a6ba82a85bc..400f396d355 100644 --- a/tests/components/trafikverket_train/test_config_flow.py +++ b/tests/components/trafikverket_train/test_config_flow.py @@ -12,7 +12,7 @@ from pytrafikverket.exceptions import ( NoTrainStationFound, UnknownError, ) -from pytrafikverket.trafikverket_train import TrainStop +from pytrafikverket.models import TrainStopModel from homeassistant import config_entries from homeassistant.components.trafikverket_train.const import ( @@ -479,8 +479,8 @@ async def test_reauth_flow_error_departures( async def test_options_flow( hass: HomeAssistant, - get_trains: list[TrainStop], - get_train_stop: TrainStop, + get_trains: list[TrainStopModel], + get_train_stop: TrainStopModel, ) -> None: """Test a reauthentication flow.""" entry = MockConfigEntry( diff --git a/tests/components/trafikverket_train/test_init.py b/tests/components/trafikverket_train/test_init.py index 329d8d716d0..06598297dd1 100644 --- a/tests/components/trafikverket_train/test_init.py +++ b/tests/components/trafikverket_train/test_init.py @@ -5,7 +5,7 @@ from __future__ import annotations from unittest.mock import patch from pytrafikverket.exceptions import InvalidAuthentication, NoTrainStationFound -from pytrafikverket.trafikverket_train import TrainStop +from pytrafikverket.models import TrainStopModel from syrupy.assertion import SnapshotAssertion from homeassistant.components.trafikverket_train.const import DOMAIN @@ -18,7 +18,9 @@ from . import ENTRY_CONFIG, OPTIONS_CONFIG from tests.common import MockConfigEntry -async def test_unload_entry(hass: HomeAssistant, get_trains: list[TrainStop]) -> None: +async def test_unload_entry( + hass: HomeAssistant, get_trains: list[TrainStopModel] +) -> None: """Test unload an entry.""" entry = MockConfigEntry( domain=DOMAIN, @@ -52,7 +54,7 @@ async def test_unload_entry(hass: HomeAssistant, get_trains: list[TrainStop]) -> async def test_auth_failed( hass: HomeAssistant, - get_trains: list[TrainStop], + get_trains: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test authentication failed.""" @@ -82,7 +84,7 @@ async def test_auth_failed( async def test_no_stations( hass: HomeAssistant, - get_trains: list[TrainStop], + get_trains: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test stations are missing.""" @@ -108,7 +110,7 @@ async def test_no_stations( async def test_migrate_entity_unique_id( hass: HomeAssistant, - get_trains: list[TrainStop], + get_trains: list[TrainStopModel], snapshot: SnapshotAssertion, entity_registry: EntityRegistry, ) -> None: diff --git a/tests/components/trafikverket_train/test_sensor.py b/tests/components/trafikverket_train/test_sensor.py index f21561dd287..f4da3526cb2 100644 --- a/tests/components/trafikverket_train/test_sensor.py +++ b/tests/components/trafikverket_train/test_sensor.py @@ -8,7 +8,7 @@ from unittest.mock import patch from freezegun.api import FrozenDateTimeFactory import pytest from pytrafikverket.exceptions import InvalidAuthentication, NoTrainAnnouncementFound -from pytrafikverket.trafikverket_train import TrainStop +from pytrafikverket.models import TrainStopModel from syrupy.assertion import SnapshotAssertion from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntry @@ -23,8 +23,8 @@ async def test_sensor_next( hass: HomeAssistant, freezer: FrozenDateTimeFactory, load_int: ConfigEntry, - get_trains_next: list[TrainStop], - get_train_stop: TrainStop, + get_trains_next: list[TrainStopModel], + get_train_stop: TrainStopModel, snapshot: SnapshotAssertion, ) -> None: """Test the Trafikverket Train sensor.""" @@ -70,7 +70,7 @@ async def test_sensor_single_stop( hass: HomeAssistant, freezer: FrozenDateTimeFactory, load_int: ConfigEntry, - get_trains_next: list[TrainStop], + get_trains_next: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test the Trafikverket Train sensor.""" @@ -86,7 +86,7 @@ async def test_sensor_update_auth_failure( hass: HomeAssistant, freezer: FrozenDateTimeFactory, load_int: ConfigEntry, - get_trains_next: list[TrainStop], + get_trains_next: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test the Trafikverket Train sensor with authentication update failure.""" @@ -119,7 +119,7 @@ async def test_sensor_update_failure( hass: HomeAssistant, freezer: FrozenDateTimeFactory, load_int: ConfigEntry, - get_trains_next: list[TrainStop], + get_trains_next: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test the Trafikverket Train sensor with update failure.""" @@ -149,7 +149,7 @@ async def test_sensor_update_failure_no_state( hass: HomeAssistant, freezer: FrozenDateTimeFactory, load_int: ConfigEntry, - get_trains_next: list[TrainStop], + get_trains_next: list[TrainStopModel], snapshot: SnapshotAssertion, ) -> None: """Test the Trafikverket Train sensor with update failure from empty state."""