mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
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:
parent
10d3c3d341
commit
ebe7a4747d
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"]
|
||||
}
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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"]
|
||||
}
|
||||
|
@ -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(
|
||||
|
@ -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"]
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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"]
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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."""
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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."""
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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."""
|
||||
|
@ -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")
|
||||
|
@ -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."""
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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(
|
||||
|
@ -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,
|
||||
|
@ -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")
|
||||
|
@ -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,
|
||||
|
@ -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(
|
||||
|
@ -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:
|
||||
|
@ -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."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user