2025-02-24 08:52:53 +01:00

72 lines
2.1 KiB
Python

"""Common fixtures and objects for the LG webOS TV integration tests."""
from collections.abc import Generator
from unittest.mock import AsyncMock, Mock, patch
from aiowebostv import WebOsTvInfo, WebOsTvState
import pytest
from homeassistant.components.webostv.const import LIVE_TV_APP_ID
from .const import (
CHANNEL_1,
CHANNEL_2,
CLIENT_KEY,
FAKE_UUID,
MOCK_APPS,
MOCK_INPUTS,
TV_MODEL,
)
@pytest.fixture
def mock_setup_entry() -> Generator[AsyncMock]:
"""Override async_setup_entry."""
with patch(
"homeassistant.components.webostv.async_setup_entry", return_value=True
) as mock_setup_entry:
yield mock_setup_entry
@pytest.fixture(name="client")
def client_fixture():
"""Patch of client library for tests."""
with (
patch(
"homeassistant.components.webostv.WebOsClient", autospec=True
) as mock_client_class,
patch(
"homeassistant.components.webostv.config_flow.WebOsClient",
new=mock_client_class,
),
):
client = mock_client_class.return_value
client.tv_info = WebOsTvInfo(
hello={"deviceUUID": FAKE_UUID},
system={"modelName": TV_MODEL, "serialNumber": "1234567890"},
software={"major_ver": "major", "minor_ver": "minor"},
)
client.client_key = CLIENT_KEY
client.tv_state = WebOsTvState(
apps=MOCK_APPS,
inputs=MOCK_INPUTS,
current_app_id=LIVE_TV_APP_ID,
channels=[CHANNEL_1, CHANNEL_2],
current_channel=CHANNEL_1,
volume=37,
sound_output="speaker",
muted=False,
is_on=True,
media_state=[{"playState": ""}],
)
client.is_registered = Mock(return_value=True)
client.is_connected = Mock(return_value=True)
async def mock_state_update_callback():
await client.register_state_update_callback.call_args[0][0](client.tv_state)
client.mock_state_update = AsyncMock(side_effect=mock_state_update_callback)
yield client