Bump pytrafikverket to 1.0.0 (#121210)

* Update all related files and tests to new version

* Fix missed modal

* Bump requirements
This commit is contained in:
G Johansson 2024-07-04 21:09:19 +02:00 committed by GitHub
parent 10d3c3d341
commit ebe7a4747d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 158 additions and 134 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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"]
}

View File

@ -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
)

View File

@ -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"]
}

View File

@ -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(

View File

@ -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"]
}

View File

@ -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)

View File

@ -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"]
}

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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."""

View File

@ -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")

View File

@ -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."""

View File

@ -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(

View File

@ -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."""

View File

@ -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")

View File

@ -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."""

View File

@ -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]

View File

@ -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(

View File

@ -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,

View File

@ -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")

View File

@ -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,

View File

@ -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(

View File

@ -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:

View File

@ -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."""