mirror of
https://github.com/home-assistant/core.git
synced 2026-07-03 12:46:09 +01:00
135 lines
3.7 KiB
Python
135 lines
3.7 KiB
Python
"""Common fixtures for the Aqvify tests."""
|
|
|
|
from collections.abc import Generator
|
|
from typing import Any
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
from pyaqvify import (
|
|
AqvifyAccount,
|
|
AqvifyDeviceData,
|
|
AqvifyDevices,
|
|
AqvifyHourAggregatedValueList,
|
|
)
|
|
import pytest
|
|
|
|
from homeassistant.components.aqvify.const import DOMAIN
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.common import (
|
|
MockConfigEntry,
|
|
async_load_json_array_fixture,
|
|
async_load_json_object_fixture,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.aqvify.async_setup_entry", return_value=True
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry(hass: HomeAssistant) -> MockConfigEntry:
|
|
"""Return the default mocked config entry."""
|
|
config_entry = MockConfigEntry(
|
|
minor_version=1,
|
|
domain=DOMAIN,
|
|
title="Aqvify test",
|
|
data={"api_key": "fake_api_key"},
|
|
entry_id="aqvify_test",
|
|
unique_id="test_account_id",
|
|
)
|
|
config_entry.add_to_hass(hass)
|
|
return config_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_aqvify_client(
|
|
device_fixture: list[dict[str, Any]],
|
|
device_data_fixture: dict[str, Any],
|
|
device_aggregated_data_fixture: list[dict[str, Any]],
|
|
account_fixture: dict[str, Any],
|
|
) -> Generator[MagicMock]:
|
|
"""Mock an Aqvify client."""
|
|
|
|
with (
|
|
patch(
|
|
"homeassistant.components.aqvify.AqvifyAPI",
|
|
autospec=True,
|
|
) as mock_client,
|
|
patch(
|
|
"homeassistant.components.aqvify.config_flow.AqvifyAPI",
|
|
new=mock_client,
|
|
),
|
|
):
|
|
client = mock_client.return_value
|
|
|
|
client.async_get_account_id.return_value = AqvifyAccount(account_fixture)
|
|
client.async_get_devices.return_value = AqvifyDevices(device_fixture)
|
|
client.async_get_device_latest_data.return_value = AqvifyDeviceData(
|
|
device_data_fixture
|
|
)
|
|
client.async_get_hour_aggregation.return_value = AqvifyHourAggregatedValueList(
|
|
device_aggregated_data_fixture
|
|
)
|
|
yield client
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def load_device_file() -> str:
|
|
"""Fixture for loading device file."""
|
|
return "default_devices.json"
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def load_device_data_file() -> str:
|
|
"""Fixture for loading device data file."""
|
|
return "default_device_data.json"
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def load_account_file() -> str:
|
|
"""Fixture for loading account file."""
|
|
return "default_account.json"
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def load_aggr_data_file() -> str:
|
|
"""Fixture for loading aggregated data file."""
|
|
return "default_aggregated.json"
|
|
|
|
|
|
@pytest.fixture
|
|
async def device_fixture(
|
|
hass: HomeAssistant, load_device_file: str
|
|
) -> list[dict[str, Any]]:
|
|
"""Fixture for device."""
|
|
return await async_load_json_array_fixture(hass, load_device_file, DOMAIN)
|
|
|
|
|
|
@pytest.fixture
|
|
async def device_data_fixture(
|
|
hass: HomeAssistant, load_device_data_file: str
|
|
) -> dict[str, Any]:
|
|
"""Fixture for device data."""
|
|
return await async_load_json_object_fixture(hass, load_device_data_file, DOMAIN)
|
|
|
|
|
|
@pytest.fixture
|
|
async def account_fixture(
|
|
hass: HomeAssistant, load_account_file: str
|
|
) -> dict[str, Any]:
|
|
"""Fixture for account data."""
|
|
return await async_load_json_object_fixture(hass, load_account_file, DOMAIN)
|
|
|
|
|
|
@pytest.fixture
|
|
async def device_aggregated_data_fixture(
|
|
hass: HomeAssistant, load_aggr_data_file: str
|
|
) -> list[dict[str, Any]]:
|
|
"""Fixture for aggregated datapoint."""
|
|
return await async_load_json_array_fixture(hass, load_aggr_data_file, DOMAIN)
|