core/tests/components/stt/common.py

57 lines
1.6 KiB
Python
Raw Normal View History

"""Provide common test tools for STT."""
from __future__ import annotations
from collections.abc import Callable, Coroutine
from pathlib import Path
from typing import Any
from homeassistant.components.stt import Provider
from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from tests.common import MockPlatform, mock_platform
class MockSTTPlatform(MockPlatform):
"""Help to set up test stt service."""
def __init__(
self,
async_get_engine: Callable[
[HomeAssistant, ConfigType, DiscoveryInfoType | None],
Coroutine[Any, Any, Provider | None],
]
| None = None,
get_engine: Callable[
[HomeAssistant, ConfigType, DiscoveryInfoType | None], Provider | None
]
| None = None,
) -> None:
"""Return the stt service."""
super().__init__()
if get_engine:
self.get_engine = get_engine
if async_get_engine:
self.async_get_engine = async_get_engine
def mock_stt_platform(
hass: HomeAssistant,
tmp_path: Path,
integration: str = "stt",
async_get_engine: Callable[
[HomeAssistant, ConfigType, DiscoveryInfoType | None],
Coroutine[Any, Any, Provider | None],
]
| None = None,
get_engine: Callable[
[HomeAssistant, ConfigType, DiscoveryInfoType | None], Provider | None
]
| None = None,
):
"""Specialize the mock platform for stt."""
loaded_platform = MockSTTPlatform(async_get_engine, get_engine)
mock_platform(hass, f"{integration}.stt", loaded_platform)
return loaded_platform