diff --git a/tests/components/unifi/snapshots/test_sensor.ambr b/tests/components/unifi/snapshots/test_sensor.ambr new file mode 100644 index 00000000000..531da06f7c7 --- /dev/null +++ b/tests/components/unifi/snapshots/test_sensor.ambr @@ -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 + +# --- +# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-config_entry_options0].3 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload0-sensor.wired_client_rx-rx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload1-sensor.wired_client_rx-rx--config_entry_options0].5 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-config_entry_options0].3 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload1-sensor.wired_client_tx-tx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload2-sensor.wired_client_tx-tx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload2-sensor.wireless_client_rx-rx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload3-sensor.wireless_client_rx-rx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload3-sensor.wireless_client_tx-tx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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 + +# --- +# name: test_sensor_sources[client_payload4-sensor.wireless_client_tx-tx--config_entry_options0].5 + +# --- +# 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 + +# --- +# 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' +# --- diff --git a/tests/components/unifi/test_sensor.py b/tests/components/unifi/test_sensor.py index 802166068b2..960a5d3e529 100644 --- a/tests/components/unifi/test_sensor.py +++ b/tests/components/unifi/test_sensor.py @@ -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