mirror of https://github.com/home-assistant/core
138 lines
3.7 KiB
Python
138 lines
3.7 KiB
Python
"""Configuration for Israel rail tests."""
|
|
|
|
from collections.abc import Generator
|
|
from datetime import datetime
|
|
from unittest.mock import AsyncMock, patch
|
|
from zoneinfo import ZoneInfo
|
|
|
|
from israelrailapi.api import TrainRoute
|
|
import pytest
|
|
|
|
from homeassistant.components.israel_rail import CONF_DESTINATION, CONF_START, DOMAIN
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
VALID_CONFIG = {
|
|
CONF_START: "באר יעקב",
|
|
CONF_DESTINATION: "אשקלון",
|
|
}
|
|
|
|
SOURCE_DEST = "באר יעקב אשקלון"
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.israel_rail.async_setup_entry", return_value=True
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Return the default mocked config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
data=VALID_CONFIG,
|
|
unique_id=SOURCE_DEST,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_israelrail() -> AsyncMock:
|
|
"""Build a fixture for the Israel rail API."""
|
|
with (
|
|
patch(
|
|
"homeassistant.components.israel_rail.TrainSchedule",
|
|
autospec=True,
|
|
) as mock_client,
|
|
patch(
|
|
"homeassistant.components.israel_rail.config_flow.TrainSchedule",
|
|
new=mock_client,
|
|
),
|
|
):
|
|
client = mock_client.return_value
|
|
client.query.return_value = TRAINS
|
|
|
|
yield client
|
|
|
|
|
|
def get_time(hour: int, minute: int) -> str:
|
|
"""Return a time in isoformat."""
|
|
return datetime(2021, 10, 10, hour, minute, 10, tzinfo=ZoneInfo("UTC")).isoformat()
|
|
|
|
|
|
def get_train_route(
|
|
train_number: str = "1234",
|
|
departure_time: str = "2021-10-10T10:10:10",
|
|
arrival_time: str = "2021-10-10T10:10:10",
|
|
origin_platform: str = "1",
|
|
dest_platform: str = "2",
|
|
origin_station: str = "3500",
|
|
destination_station: str = "3700",
|
|
) -> TrainRoute:
|
|
"""Build a TrainRoute of the israelrail API."""
|
|
return TrainRoute(
|
|
[
|
|
{
|
|
"orignStation": origin_station,
|
|
"destinationStation": destination_station,
|
|
"departureTime": departure_time,
|
|
"arrivalTime": arrival_time,
|
|
"originPlatform": origin_platform,
|
|
"destPlatform": dest_platform,
|
|
"trainNumber": train_number,
|
|
}
|
|
]
|
|
)
|
|
|
|
|
|
TRAINS = [
|
|
get_train_route(
|
|
train_number="1234",
|
|
departure_time=get_time(10, 10),
|
|
arrival_time=get_time(10, 30),
|
|
origin_platform="1",
|
|
dest_platform="2",
|
|
origin_station="3500",
|
|
destination_station="3700",
|
|
),
|
|
get_train_route(
|
|
train_number="1235",
|
|
departure_time=get_time(10, 20),
|
|
arrival_time=get_time(10, 40),
|
|
origin_platform="1",
|
|
dest_platform="2",
|
|
origin_station="3500",
|
|
destination_station="3700",
|
|
),
|
|
get_train_route(
|
|
train_number="1236",
|
|
departure_time=get_time(10, 30),
|
|
arrival_time=get_time(10, 50),
|
|
origin_platform="1",
|
|
dest_platform="2",
|
|
origin_station="3500",
|
|
destination_station="3700",
|
|
),
|
|
get_train_route(
|
|
train_number="1237",
|
|
departure_time=get_time(10, 40),
|
|
arrival_time=get_time(11, 00),
|
|
origin_platform="1",
|
|
dest_platform="2",
|
|
origin_station="3500",
|
|
destination_station="3700",
|
|
),
|
|
get_train_route(
|
|
train_number="1238",
|
|
departure_time=get_time(10, 50),
|
|
arrival_time=get_time(11, 10),
|
|
origin_platform="1",
|
|
dest_platform="2",
|
|
origin_station="3500",
|
|
destination_station="3700",
|
|
),
|
|
]
|