Add one UniFi sensor test to validate entity attributes (#119914)

This commit is contained in:
Robert Svensson 2024-06-21 12:59:31 +02:00 committed by GitHub
parent e1a6ac59e1
commit ed7a888c07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 336 additions and 1 deletions

View file

@ -0,0 +1,262 @@
# serializer version: 1
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0]
'data_rate'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0].1
'data_rate'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0].2
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0].3
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0].4
'1234.0'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0]
'rx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].3
'Wired client RX'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].6
'1234.0'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0]
'uptime-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].2
'timestamp'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].3
'Wired client Uptime'
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].4
None
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].5
None
# ---
# name: test_sensor_sources[client_payload0-sensor.wired_client_uptime-uptime--config_entry_options0].6
'2020-09-14T14:41:45+00:00'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0]
'rx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].3
'Wired client RX'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].6
'1234.0'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0]
'data_rate'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0].1
'data_rate'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0].2
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0].3
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0].4
'5678.0'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0]
'tx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].3
'Wired client TX'
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].6
'5678.0'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0]
'tx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].3
'Wired client TX'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].6
'5678.0'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0]
'uptime-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].2
'timestamp'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].3
'Wired client Uptime'
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].4
None
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].5
None
# ---
# name: test_sensor_sources[client_payload2-sensor.wired_client_uptime-uptime--config_entry_options0].6
'2020-09-14T14:41:45+00:00'
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0]
'rx-00:00:00:00:00:02'
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].3
'Wireless client RX'
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].6
'2345.0'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0]
'rx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].3
'Wireless client RX'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].6
'2345.0'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0]
'tx-00:00:00:00:00:02'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].3
'Wireless client TX'
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].6
'6789.0'
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0]
'tx-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].2
'data_rate'
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].3
'Wireless client TX'
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].4
<SensorStateClass.MEASUREMENT: 'measurement'>
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].5
<UnitOfDataRate.MEGABYTES_PER_SECOND: 'MB/s'>
# ---
# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].6
'6789.0'
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0]
'uptime-00:00:00:00:00:01'
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].1
<EntityCategory.DIAGNOSTIC: 'diagnostic'>
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].2
'timestamp'
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].3
'Wireless client Uptime'
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].4
None
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].5
None
# ---
# name: test_sensor_sources[client_payload5-sensor.wireless_client_uptime-uptime--config_entry_options0].6
'2021-01-01T01:00:00+00:00'
# ---

View file

@ -11,6 +11,7 @@ from aiounifi.models.device import DeviceState
from aiounifi.models.message import MessageKey
from freezegun.api import FrozenDateTimeFactory, freeze_time
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.sensor import (
ATTR_STATE_CLASS,
@ -29,7 +30,13 @@ from homeassistant.components.unifi.const import (
DEVICE_STATES,
)
from homeassistant.config_entries import RELOAD_AFTER_UPDATE_DELAY, ConfigEntry
from homeassistant.const import ATTR_DEVICE_CLASS, STATE_UNAVAILABLE, EntityCategory
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_FRIENDLY_NAME,
ATTR_UNIT_OF_MEASUREMENT,
STATE_UNAVAILABLE,
EntityCategory,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.entity_registry import RegistryEntryDisabler
@ -1332,3 +1339,69 @@ async def test_device_client_sensors(
assert hass.states.get("sensor.wired_device_clients").state == "2"
assert hass.states.get("sensor.wireless_device_clients").state == "0"
WIRED_CLIENT = {
"hostname": "Wired client",
"is_wired": True,
"mac": "00:00:00:00:00:01",
"oui": "Producer",
"wired-rx_bytes-r": 1234000000,
"wired-tx_bytes-r": 5678000000,
"uptime": 1600094505,
}
WIRELESS_CLIENT = {
"is_wired": False,
"mac": "00:00:00:00:00:01",
"name": "Wireless client",
"oui": "Producer",
"rx_bytes-r": 2345000000.0,
"tx_bytes-r": 6789000000.0,
"uptime": 60,
}
@pytest.mark.parametrize(
"config_entry_options",
[
{
CONF_ALLOW_BANDWIDTH_SENSORS: True,
CONF_ALLOW_UPTIME_SENSORS: True,
CONF_TRACK_CLIENTS: False,
CONF_TRACK_DEVICES: False,
}
],
)
@pytest.mark.parametrize(
("client_payload", "entity_id", "unique_id_prefix"),
[
([WIRED_CLIENT], "sensor.wired_client_rx", "rx-"),
([WIRED_CLIENT], "sensor.wired_client_tx", "tx-"),
([WIRED_CLIENT], "sensor.wired_client_uptime", "uptime-"),
([WIRELESS_CLIENT], "sensor.wireless_client_rx", "rx-"),
([WIRELESS_CLIENT], "sensor.wireless_client_tx", "tx-"),
([WIRELESS_CLIENT], "sensor.wireless_client_uptime", "uptime-"),
],
)
@pytest.mark.usefixtures("config_entry_setup")
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.freeze_time("2021-01-01 01:01:00")
async def test_sensor_sources(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
entity_id: str,
unique_id_prefix: str,
) -> None:
"""Test sensor sources and the entity description."""
ent_reg_entry = entity_registry.async_get(entity_id)
assert ent_reg_entry.unique_id.startswith(unique_id_prefix)
assert ent_reg_entry.unique_id == snapshot
assert ent_reg_entry.entity_category == snapshot
state = hass.states.get(entity_id)
assert state.attributes.get(ATTR_DEVICE_CLASS) == snapshot
assert state.attributes.get(ATTR_FRIENDLY_NAME) == snapshot
assert state.attributes.get(ATTR_STATE_CLASS) == snapshot
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == snapshot
assert state.state == snapshot