core/tests/components/israel_rail/conftest.py

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",
),
]