mirror of
https://github.com/home-assistant/core.git
synced 2026-03-03 00:00:58 +00:00
Remove analytics platform in template (#152876)
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
"""Analytics platform."""
|
||||
|
||||
from homeassistant.components.analytics import (
|
||||
AnalyticsInput,
|
||||
AnalyticsModifications,
|
||||
EntityAnalyticsModifications,
|
||||
)
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, split_entity_id
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
FILTERED_PLATFORM_CAPABILITY: dict[str, str] = {
|
||||
Platform.FAN: "preset_modes",
|
||||
Platform.SELECT: "options",
|
||||
}
|
||||
|
||||
|
||||
async def async_modify_analytics(
|
||||
hass: HomeAssistant, analytics_input: AnalyticsInput
|
||||
) -> AnalyticsModifications:
|
||||
"""Modify the analytics."""
|
||||
ent_reg = er.async_get(hass)
|
||||
|
||||
entities: dict[str, EntityAnalyticsModifications] = {}
|
||||
for entity_id in analytics_input.entity_ids:
|
||||
platform = split_entity_id(entity_id)[0]
|
||||
if platform not in FILTERED_PLATFORM_CAPABILITY:
|
||||
continue
|
||||
|
||||
entity_entry = ent_reg.entities[entity_id]
|
||||
if entity_entry.capabilities is not None:
|
||||
filtered_capability = FILTERED_PLATFORM_CAPABILITY[platform]
|
||||
if filtered_capability not in entity_entry.capabilities:
|
||||
continue
|
||||
|
||||
capabilities = dict(entity_entry.capabilities)
|
||||
capabilities[filtered_capability] = len(capabilities[filtered_capability])
|
||||
|
||||
entities[entity_id] = EntityAnalyticsModifications(
|
||||
capabilities=capabilities
|
||||
)
|
||||
|
||||
return AnalyticsModifications(entities=entities)
|
||||
@@ -1,105 +0,0 @@
|
||||
"""Tests for analytics platform."""
|
||||
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.analytics import async_devices_payload
|
||||
from homeassistant.components.template import DOMAIN
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_analytics(
|
||||
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
||||
) -> None:
|
||||
"""Test the analytics platform."""
|
||||
await async_setup_component(hass, "analytics", {})
|
||||
|
||||
entity_registry.async_get_or_create(
|
||||
domain=Platform.FAN,
|
||||
platform="template",
|
||||
unique_id="fan1",
|
||||
suggested_object_id="my_fan",
|
||||
capabilities={"options": ["a", "b", "c"], "preset_modes": ["auto", "eco"]},
|
||||
)
|
||||
entity_registry.async_get_or_create(
|
||||
domain=Platform.SELECT,
|
||||
platform="template",
|
||||
unique_id="select1",
|
||||
suggested_object_id="my_select",
|
||||
capabilities={"not_filtered": "xyz", "options": ["a", "b", "c"]},
|
||||
)
|
||||
entity_registry.async_get_or_create(
|
||||
domain=Platform.SELECT,
|
||||
platform="template",
|
||||
unique_id="select2",
|
||||
suggested_object_id="my_select",
|
||||
capabilities={"not_filtered": "xyz"},
|
||||
)
|
||||
entity_registry.async_get_or_create(
|
||||
domain=Platform.LIGHT,
|
||||
platform="template",
|
||||
unique_id="light1",
|
||||
suggested_object_id="my_light",
|
||||
capabilities={"not_filtered": "abc"},
|
||||
)
|
||||
|
||||
result = await async_devices_payload(hass)
|
||||
assert result["integrations"][DOMAIN]["entities"] == [
|
||||
{
|
||||
"assumed_state": None,
|
||||
"capabilities": {
|
||||
"options": ["a", "b", "c"],
|
||||
"preset_modes": 2,
|
||||
},
|
||||
"domain": "fan",
|
||||
"entity_category": None,
|
||||
"has_entity_name": False,
|
||||
"modified_by_integration": [
|
||||
"capabilities",
|
||||
],
|
||||
"original_device_class": None,
|
||||
"unit_of_measurement": None,
|
||||
},
|
||||
{
|
||||
"assumed_state": None,
|
||||
"capabilities": {
|
||||
"not_filtered": "xyz",
|
||||
"options": 3,
|
||||
},
|
||||
"domain": "select",
|
||||
"entity_category": None,
|
||||
"has_entity_name": False,
|
||||
"modified_by_integration": [
|
||||
"capabilities",
|
||||
],
|
||||
"original_device_class": None,
|
||||
"unit_of_measurement": None,
|
||||
},
|
||||
{
|
||||
"assumed_state": None,
|
||||
"capabilities": {
|
||||
"not_filtered": "xyz",
|
||||
},
|
||||
"domain": "select",
|
||||
"entity_category": None,
|
||||
"has_entity_name": False,
|
||||
"modified_by_integration": None,
|
||||
"original_device_class": None,
|
||||
"unit_of_measurement": None,
|
||||
},
|
||||
{
|
||||
"assumed_state": None,
|
||||
"capabilities": {
|
||||
"not_filtered": "abc",
|
||||
},
|
||||
"domain": "light",
|
||||
"entity_category": None,
|
||||
"has_entity_name": False,
|
||||
"modified_by_integration": None,
|
||||
"original_device_class": None,
|
||||
"unit_of_measurement": None,
|
||||
},
|
||||
]
|
||||
Reference in New Issue
Block a user