core/tests/components/kaleidescape/conftest.py

74 lines
2.2 KiB
Python

"""Fixtures for Kaleidescape integration."""
from unittest.mock import AsyncMock, patch
from kaleidescape import Dispatcher
from kaleidescape.device import Automation, Movie, Power, System
import pytest
from typing_extensions import Generator
from homeassistant.components.kaleidescape.const import DOMAIN
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from . import MOCK_HOST, MOCK_SERIAL
from tests.common import MockConfigEntry
@pytest.fixture(name="mock_device")
def fixture_mock_device() -> Generator[AsyncMock]:
"""Return a mocked Kaleidescape device."""
with patch(
"homeassistant.components.kaleidescape.KaleidescapeDevice", autospec=True
) as mock:
host = MOCK_HOST
device = mock.return_value
device.dispatcher = Dispatcher()
device.host = host
device.port = 10000
device.serial_number = MOCK_SERIAL
device.is_connected = True
device.is_server_only = False
device.is_movie_player = True
device.is_music_player = False
device.system = System(
ip_address=host,
serial_number=MOCK_SERIAL,
type="Strato",
protocol=16,
kos_version="10.4.2-19218",
friendly_name=f"Device {MOCK_SERIAL}",
movie_zones=1,
music_zones=1,
)
device.power = Power(state="standby", readiness="disabled", zone=["available"])
device.movie = Movie()
device.automation = Automation()
yield device
@pytest.fixture(name="mock_config_entry")
def fixture_mock_config_entry() -> MockConfigEntry:
"""Return a mock config entry."""
return MockConfigEntry(
domain=DOMAIN,
unique_id=MOCK_SERIAL,
version=1,
data={CONF_HOST: MOCK_HOST},
)
@pytest.fixture(name="mock_integration")
async def fixture_mock_integration(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
) -> MockConfigEntry:
"""Return a mock ConfigEntry setup for Kaleidescape integration."""
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