"""Common fixtures for the World Air Quality Index (WAQI) tests.""" from collections.abc import AsyncGenerator, Generator from unittest.mock import AsyncMock, patch from aiowaqi import WAQIAirQuality import pytest from homeassistant.components.waqi.const import CONF_STATION_NUMBER, DOMAIN from homeassistant.const import CONF_API_KEY from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry, async_load_json_object_fixture @pytest.fixture def mock_setup_entry() -> Generator[AsyncMock]: """Override async_setup_entry.""" with patch( "homeassistant.components.waqi.async_setup_entry", return_value=True ) as mock_setup_entry: yield mock_setup_entry @pytest.fixture def mock_config_entry() -> MockConfigEntry: """Mock config entry.""" return MockConfigEntry( domain=DOMAIN, unique_id="4584", title="de Jongweg, Utrecht", data={CONF_API_KEY: "asd", CONF_STATION_NUMBER: 4584}, ) @pytest.fixture async def mock_waqi(hass: HomeAssistant) -> AsyncGenerator[AsyncMock]: """Mock WAQI client.""" with ( patch( "homeassistant.components.waqi.WAQIClient", autospec=True, ) as mock_waqi, patch( "homeassistant.components.waqi.config_flow.WAQIClient", new=mock_waqi, ), ): client = mock_waqi.return_value air_quality = WAQIAirQuality.from_dict( await async_load_json_object_fixture( hass, "air_quality_sensor.json", DOMAIN ) ) client.get_by_station_number.return_value = air_quality client.get_by_ip.return_value = air_quality client.get_by_coordinates.return_value = air_quality yield client