core/tests/components/zamg/conftest.py

100 lines
3.1 KiB
Python

"""Fixtures for Zamg integration tests."""
from collections.abc import Generator
import json
from unittest.mock import MagicMock, patch
import pytest
from zamg import ZamgData as ZamgDevice
from homeassistant.components.zamg.const import CONF_STATION_ID, DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry, load_fixture
TEST_STATION_ID = "11240"
TEST_STATION_NAME = "Graz/Flughafen"
TEST_STATION_ID_2 = "11035"
TEST_STATION_NAME_2 = "WIEN/HOHE WARTE"
@pytest.fixture
def mock_config_entry() -> MockConfigEntry:
"""Return the default mocked config entry."""
return MockConfigEntry(
domain=DOMAIN,
data={CONF_STATION_ID: TEST_STATION_ID},
unique_id=TEST_STATION_ID,
)
@pytest.fixture
def mock_setup_entry() -> Generator[None]:
"""Mock setting up a config entry."""
with patch("homeassistant.components.zamg.async_setup_entry", return_value=True):
yield
@pytest.fixture
def mock_zamg_config_flow() -> Generator[MagicMock]:
"""Return a mocked Zamg client."""
with patch(
"homeassistant.components.zamg.sensor.ZamgData", autospec=True
) as zamg_mock:
zamg = zamg_mock.return_value
zamg.update.return_value = ZamgDevice(
json.loads(load_fixture("zamg/data.json"))
)
zamg.get_data.return_value = zamg.get_data(TEST_STATION_ID)
yield zamg
@pytest.fixture
def mock_zamg() -> Generator[MagicMock]:
"""Return a mocked Zamg client."""
with patch(
"homeassistant.components.zamg.config_flow.ZamgData", autospec=True
) as zamg_mock:
zamg = zamg_mock.return_value
zamg.update.return_value = {TEST_STATION_ID: {"Name": TEST_STATION_NAME}}
zamg.zamg_stations.return_value = {
TEST_STATION_ID: (46.99305556, 15.43916667, TEST_STATION_NAME),
"11244": (46.8722229, 15.90361118, "BAD GLEICHENBERG"),
}
zamg.closest_station.return_value = TEST_STATION_ID
zamg.get_data.return_value = TEST_STATION_ID
zamg.get_station_name = TEST_STATION_NAME
yield zamg
@pytest.fixture
def mock_zamg_coordinator() -> Generator[MagicMock]:
"""Return a mocked Zamg client."""
with patch(
"homeassistant.components.zamg.coordinator.ZamgDevice", autospec=True
) as zamg_mock:
zamg = zamg_mock.return_value
zamg.update.return_value = {TEST_STATION_ID: {"Name": TEST_STATION_NAME}}
zamg.zamg_stations.return_value = {
TEST_STATION_ID: (46.99305556, 15.43916667, TEST_STATION_NAME),
"11244": (46.8722229, 15.90361118, "BAD GLEICHENBERG"),
}
zamg.closest_station.return_value = TEST_STATION_ID
zamg.get_data.return_value = TEST_STATION_ID
zamg.get_station_name = TEST_STATION_NAME
yield zamg
@pytest.fixture
async def init_integration(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Zamg integration for testing."""
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
return mock_config_entry