"""Define test fixtures for IQVIA.""" import json from unittest.mock import patch import pytest from homeassistant.components.iqvia.const import CONF_ZIP_CODE, DOMAIN from homeassistant.setup import async_setup_component from tests.common import MockConfigEntry, load_fixture @pytest.fixture(name="config_entry") def config_entry_fixture(hass, config): """Define a config entry fixture.""" entry = MockConfigEntry(domain=DOMAIN, unique_id=config[CONF_ZIP_CODE], data=config) entry.add_to_hass(hass) return entry @pytest.fixture(name="config") def config_fixture(hass): """Define a config entry data fixture.""" return { CONF_ZIP_CODE: "12345", } @pytest.fixture(name="data_allergy_forecast", scope="package") def data_allergy_forecast_fixture(): """Define allergy forecast data.""" return json.loads(load_fixture("allergy_forecast_data.json", "iqvia")) @pytest.fixture(name="data_allergy_index", scope="package") def data_allergy_index_fixture(): """Define allergy index data.""" return json.loads(load_fixture("allergy_index_data.json", "iqvia")) @pytest.fixture(name="data_allergy_outlook", scope="package") def data_allergy_outlook_fixture(): """Define allergy outlook data.""" return json.loads(load_fixture("allergy_outlook_data.json", "iqvia")) @pytest.fixture(name="data_asthma_forecast", scope="package") def data_asthma_forecast_fixture(): """Define asthma forecast data.""" return json.loads(load_fixture("asthma_forecast_data.json", "iqvia")) @pytest.fixture(name="data_asthma_index", scope="package") def data_asthma_index_fixture(): """Define asthma index data.""" return json.loads(load_fixture("asthma_index_data.json", "iqvia")) @pytest.fixture(name="data_disease_forecast", scope="package") def data_disease_forecast_fixture(): """Define disease forecast data.""" return json.loads(load_fixture("disease_forecast_data.json", "iqvia")) @pytest.fixture(name="data_disease_index", scope="package") def data_disease_index_fixture(): """Define disease index data.""" return json.loads(load_fixture("disease_index_data.json", "iqvia")) @pytest.fixture(name="setup_iqvia") async def setup_iqvia_fixture( hass, config, data_allergy_forecast, data_allergy_index, data_allergy_outlook, data_asthma_forecast, data_asthma_index, data_disease_forecast, data_disease_index, ): """Define a fixture to set up IQVIA.""" with patch( "pyiqvia.allergens.Allergens.extended", return_value=data_allergy_forecast ), patch( "pyiqvia.allergens.Allergens.current", return_value=data_allergy_index ), patch( "pyiqvia.allergens.Allergens.outlook", return_value=data_allergy_outlook ), patch( "pyiqvia.asthma.Asthma.extended", return_value=data_asthma_forecast ), patch( "pyiqvia.asthma.Asthma.current", return_value=data_asthma_index ), patch( "pyiqvia.disease.Disease.extended", return_value=data_disease_forecast ), patch( "pyiqvia.disease.Disease.current", return_value=data_disease_index ), patch( "homeassistant.components.iqvia.PLATFORMS", [] ): assert await async_setup_component(hass, DOMAIN, config) await hass.async_block_till_done() yield