Bump screenlogicpy to v0.9.0 (#92475)

Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
Kevin Worrel 2023-09-09 15:39:54 -07:00 committed by GitHub
parent 8de3945bd4
commit 092580a3ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 3821 additions and 652 deletions

View file

@ -0,0 +1,91 @@
"""Tests for ScreenLogic integration data processing."""
from unittest.mock import DEFAULT, patch
import pytest
from screenlogicpy import ScreenLogicGateway
from screenlogicpy.const.data import ATTR, DEVICE, GROUP, VALUE
from homeassistant.components.screenlogic import DOMAIN
from homeassistant.components.screenlogic.data import PathPart, realize_path_template
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import (
DATA_MIN_ENTITY_CLEANUP,
GATEWAY_DISCOVERY_IMPORT_PATH,
MOCK_ADAPTER_MAC,
MOCK_ADAPTER_NAME,
stub_async_connect,
)
from tests.common import MockConfigEntry
async def test_async_cleanup_entries(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test cleanup of unused entities."""
mock_config_entry.add_to_hass(hass)
entity_registry = er.async_get(hass)
device_registry = dr.async_get(hass)
device: dr.DeviceEntry = device_registry.async_get_or_create(
config_entry_id=mock_config_entry.entry_id,
connections={(dr.CONNECTION_NETWORK_MAC, MOCK_ADAPTER_MAC)},
)
TEST_UNUSED_ENTRY = {
"domain": SENSOR_DOMAIN,
"platform": DOMAIN,
"unique_id": f"{MOCK_ADAPTER_MAC}_saturation",
"suggested_object_id": f"{MOCK_ADAPTER_NAME} Saturation Index",
"disabled_by": None,
"has_entity_name": True,
"original_name": "Saturation Index",
}
unused_entity: er.RegistryEntry = entity_registry.async_get_or_create(
**TEST_UNUSED_ENTRY, device_id=device.id, config_entry=mock_config_entry
)
assert unused_entity
assert unused_entity.unique_id == TEST_UNUSED_ENTRY["unique_id"]
with patch(
GATEWAY_DISCOVERY_IMPORT_PATH,
return_value={},
), patch.multiple(
ScreenLogicGateway,
async_connect=lambda *args, **kwargs: stub_async_connect(
DATA_MIN_ENTITY_CLEANUP, *args, **kwargs
),
is_connected=True,
_async_connected_request=DEFAULT,
):
assert await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
deleted_entity = entity_registry.async_get(unused_entity.entity_id)
assert deleted_entity is None
def test_realize_path_templates() -> None:
"""Test path template realization."""
assert realize_path_template(
(PathPart.DEVICE, PathPart.INDEX), (DEVICE.PUMP, 0, VALUE.WATTS_NOW)
) == (DEVICE.PUMP, 0)
assert realize_path_template(
(PathPart.DEVICE, PathPart.INDEX, PathPart.VALUE, ATTR.NAME_INDEX),
(DEVICE.CIRCUIT, 500, GROUP.CONFIGURATION),
) == (DEVICE.CIRCUIT, 500, GROUP.CONFIGURATION, ATTR.NAME_INDEX)
with pytest.raises(KeyError):
realize_path_template(
(PathPart.DEVICE, PathPart.KEY, ATTR.VALUE),
(DEVICE.ADAPTER, VALUE.FIRMWARE),
)