"""The tests for Media Extractor integration.""" from typing import Any from unittest.mock import patch import pytest from homeassistant.components.media_extractor import DOMAIN from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.setup import async_setup_component from tests.common import async_mock_service from tests.components.media_extractor import MockYoutubeDL from tests.components.media_extractor.const import AUDIO_QUERY @pytest.fixture(autouse=True) async def setup_homeassistant(hass: HomeAssistant): """Set up the homeassistant integration.""" await async_setup_component(hass, "homeassistant", {}) @pytest.fixture(autouse=True) async def setup_media_player(hass: HomeAssistant) -> None: """Set up the demo media player.""" await async_setup_component( hass, "media_player", {"media_player": {"platform": "demo"}} ) await hass.async_block_till_done() @pytest.fixture def calls(hass: HomeAssistant) -> list[ServiceCall]: """Track calls to a mock service.""" return async_mock_service(hass, "media_player", "play_media") @pytest.fixture(name="mock_youtube_dl") async def setup_mock_yt_dlp(hass: HomeAssistant) -> MockYoutubeDL: """Mock YoutubeDL.""" mock = MockYoutubeDL({}) with patch("homeassistant.components.media_extractor.YoutubeDL", return_value=mock): yield mock @pytest.fixture(name="empty_media_extractor_config") def empty_media_extractor_config() -> dict[str, Any]: """Return base media extractor config.""" return {DOMAIN: {}} @pytest.fixture(name="audio_media_extractor_config") def audio_media_extractor_config() -> dict[str, Any]: """Media extractor config for audio.""" return {DOMAIN: {"default_query": AUDIO_QUERY}}