mirror of https://github.com/home-assistant/core
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
"""Common fixtures for the Homeassistant Analytics tests."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
import pytest
|
|
from python_homeassistant_analytics import CurrentAnalytics
|
|
from python_homeassistant_analytics.models import Addon, CustomIntegration, Integration
|
|
|
|
from homeassistant.components.analytics_insights.const import (
|
|
CONF_TRACKED_ADDONS,
|
|
CONF_TRACKED_CUSTOM_INTEGRATIONS,
|
|
CONF_TRACKED_INTEGRATIONS,
|
|
DOMAIN,
|
|
)
|
|
|
|
from tests.common import MockConfigEntry, load_fixture, load_json_object_fixture
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.analytics_insights.async_setup_entry",
|
|
return_value=True,
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_analytics_client() -> Generator[AsyncMock]:
|
|
"""Mock a Homeassistant Analytics client."""
|
|
with (
|
|
patch(
|
|
"homeassistant.components.analytics_insights.HomeassistantAnalyticsClient",
|
|
autospec=True,
|
|
) as mock_client,
|
|
patch(
|
|
"homeassistant.components.analytics_insights.config_flow.HomeassistantAnalyticsClient",
|
|
new=mock_client,
|
|
),
|
|
):
|
|
client = mock_client.return_value
|
|
client.get_current_analytics.return_value = CurrentAnalytics.from_json(
|
|
load_fixture("analytics_insights/current_data.json")
|
|
)
|
|
addons = load_json_object_fixture("analytics_insights/addons.json")
|
|
client.get_addons.return_value = {
|
|
key: Addon.from_dict(value) for key, value in addons.items()
|
|
}
|
|
integrations = load_json_object_fixture("analytics_insights/integrations.json")
|
|
client.get_integrations.return_value = {
|
|
key: Integration.from_dict(value) for key, value in integrations.items()
|
|
}
|
|
custom_integrations = load_json_object_fixture(
|
|
"analytics_insights/custom_integrations.json"
|
|
)
|
|
client.get_custom_integrations.return_value = {
|
|
key: CustomIntegration.from_dict(value)
|
|
for key, value in custom_integrations.items()
|
|
}
|
|
yield client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Mock a config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
title="Homeassistant Analytics",
|
|
data={},
|
|
options={
|
|
CONF_TRACKED_ADDONS: ["core_samba"],
|
|
CONF_TRACKED_INTEGRATIONS: ["youtube", "spotify", "myq"],
|
|
CONF_TRACKED_CUSTOM_INTEGRATIONS: ["hacs"],
|
|
},
|
|
)
|