From 168fefad887a8ef164658b16c8736c6f570965c0 Mon Sep 17 00:00:00 2001 From: Dave T <17680170+davet2001@users.noreply.github.com> Date: Mon, 20 Dec 2021 18:53:44 +0000 Subject: [PATCH] Use DeviceClass Enums in homekit (#62218) --- .../homekit/test_get_accessories.py | 7 ++-- tests/components/homekit/test_homekit.py | 36 +++++++++---------- tests/components/homekit/test_type_cameras.py | 23 ++++++------ .../homekit/test_type_humidifiers.py | 8 ++--- .../homekit/test_type_media_players.py | 18 +++++----- tests/components/homekit/test_type_sensors.py | 15 ++++---- 6 files changed, 54 insertions(+), 53 deletions(-) diff --git a/tests/components/homekit/test_get_accessories.py b/tests/components/homekit/test_get_accessories.py index 8cc416adabd..0f843c387ab 100644 --- a/tests/components/homekit/test_get_accessories.py +++ b/tests/components/homekit/test_get_accessories.py @@ -18,6 +18,7 @@ from homeassistant.components.homekit.const import ( TYPE_VALVE, ) import homeassistant.components.media_player.const as media_player_c +from homeassistant.components.sensor import SensorDeviceClass import homeassistant.components.vacuum as vacuum from homeassistant.const import ( ATTR_CODE, @@ -26,8 +27,6 @@ from homeassistant.const import ( ATTR_UNIT_OF_MEASUREMENT, CONF_NAME, CONF_TYPE, - DEVICE_CLASS_CO, - DEVICE_CLASS_CO2, LIGHT_LUX, PERCENTAGE, STATE_UNKNOWN, @@ -219,14 +218,14 @@ def test_type_media_player(type_name, entity_id, state, attrs, config): "CarbonMonoxideSensor", "sensor.co", "2", - {ATTR_DEVICE_CLASS: DEVICE_CLASS_CO}, + {ATTR_DEVICE_CLASS: SensorDeviceClass.CO}, ), ("CarbonDioxideSensor", "sensor.airmeter_co2", "500", {}), ( "CarbonDioxideSensor", "sensor.co2", "500", - {ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2}, + {ATTR_DEVICE_CLASS: SensorDeviceClass.CO2}, ), ( "HumiditySensor", diff --git a/tests/components/homekit/test_homekit.py b/tests/components/homekit/test_homekit.py index 0b1d2cc8535..2d504ad517a 100644 --- a/tests/components/homekit/test_homekit.py +++ b/tests/components/homekit/test_homekit.py @@ -11,10 +11,7 @@ import pytest from homeassistant import config as hass_config from homeassistant.components import homekit as homekit_base, zeroconf -from homeassistant.components.binary_sensor import ( - DEVICE_CLASS_BATTERY_CHARGING, - DEVICE_CLASS_MOTION, -) +from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.homekit import ( MAX_DEVICES, STATUS_READY, @@ -37,6 +34,7 @@ from homeassistant.components.homekit.const import ( ) from homeassistant.components.homekit.type_triggers import DeviceTriggerAccessory from homeassistant.components.homekit.util import get_persist_fullpath_for_entry_id +from homeassistant.components.sensor import SensorDeviceClass from homeassistant.config_entries import SOURCE_IMPORT from homeassistant.const import ( ATTR_DEVICE_CLASS, @@ -45,8 +43,6 @@ from homeassistant.const import ( ATTR_UNIT_OF_MEASUREMENT, CONF_NAME, CONF_PORT, - DEVICE_CLASS_BATTERY, - DEVICE_CLASS_HUMIDITY, EVENT_HOMEASSISTANT_STARTED, PERCENTAGE, SERVICE_RELOAD, @@ -1118,14 +1114,14 @@ async def test_homekit_finds_linked_batteries( "powerwall", "battery_charging", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY_CHARGING, + original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING, ) battery_sensor = entity_reg.async_get_or_create( "sensor", "powerwall", "battery", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY, + original_device_class=SensorDeviceClass.BATTERY, ) light = entity_reg.async_get_or_create( "light", "powerwall", "demo", device_id=device_entry.id @@ -1134,10 +1130,10 @@ async def test_homekit_finds_linked_batteries( hass.states.async_set( binary_charging_sensor.entity_id, STATE_ON, - {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY_CHARGING}, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.BATTERY_CHARGING}, ) hass.states.async_set( - battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY} + battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: SensorDeviceClass.BATTERY} ) hass.states.async_set(light.entity_id, STATE_ON) @@ -1187,14 +1183,14 @@ async def test_homekit_async_get_integration_fails( "invalid_integration_does_not_exist", "battery_charging", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY_CHARGING, + original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING, ) battery_sensor = entity_reg.async_get_or_create( "sensor", "invalid_integration_does_not_exist", "battery", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY, + original_device_class=SensorDeviceClass.BATTERY, ) light = entity_reg.async_get_or_create( "light", "invalid_integration_does_not_exist", "demo", device_id=device_entry.id @@ -1203,10 +1199,10 @@ async def test_homekit_async_get_integration_fails( hass.states.async_set( binary_charging_sensor.entity_id, STATE_ON, - {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY_CHARGING}, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.BATTERY_CHARGING}, ) hass.states.async_set( - battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY} + battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: SensorDeviceClass.BATTERY} ) hass.states.async_set(light.entity_id, STATE_ON) @@ -1334,14 +1330,14 @@ async def test_homekit_ignored_missing_devices( "powerwall", "battery_charging", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY_CHARGING, + original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING, ) entity_reg.async_get_or_create( "sensor", "powerwall", "battery", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_BATTERY, + original_device_class=SensorDeviceClass.BATTERY, ) light = entity_reg.async_get_or_create( "light", "powerwall", "demo", device_id=device_entry.id @@ -1404,7 +1400,7 @@ async def test_homekit_finds_linked_motion_sensors( "camera", "motion_sensor", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_MOTION, + original_device_class=BinarySensorDeviceClass.MOTION, ) camera = entity_reg.async_get_or_create( "camera", "camera", "demo", device_id=device_entry.id @@ -1413,7 +1409,7 @@ async def test_homekit_finds_linked_motion_sensors( hass.states.async_set( binary_motion_sensor.entity_id, STATE_ON, - {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}, ) hass.states.async_set(camera.entity_id, STATE_ON) @@ -1466,7 +1462,7 @@ async def test_homekit_finds_linked_humidity_sensors( "humidifier", "humidity_sensor", device_id=device_entry.id, - original_device_class=DEVICE_CLASS_HUMIDITY, + original_device_class=SensorDeviceClass.HUMIDITY, ) humidifier = entity_reg.async_get_or_create( "humidifier", "humidifier", "demo", device_id=device_entry.id @@ -1476,7 +1472,7 @@ async def test_homekit_finds_linked_humidity_sensors( humidity_sensor.entity_id, "42", { - ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY, ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, }, ) diff --git a/tests/components/homekit/test_type_cameras.py b/tests/components/homekit/test_type_cameras.py index ba2dadc2a19..9a8b284b97e 100644 --- a/tests/components/homekit/test_type_cameras.py +++ b/tests/components/homekit/test_type_cameras.py @@ -8,10 +8,7 @@ from pyhap.accessory_driver import AccessoryDriver import pytest from homeassistant.components import camera, ffmpeg -from homeassistant.components.binary_sensor import ( - DEVICE_CLASS_MOTION, - DEVICE_CLASS_OCCUPANCY, -) +from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.camera.img_util import TurboJPEGSingleton from homeassistant.components.homekit.accessories import HomeBridge from homeassistant.components.homekit.const import ( @@ -610,7 +607,7 @@ async def test_camera_with_linked_motion_sensor(hass, run_driver, events): motion_entity_id = "binary_sensor.motion" hass.states.async_set( - motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() entity_id = "camera.demo_camera" @@ -647,14 +644,14 @@ async def test_camera_with_linked_motion_sensor(hass, run_driver, events): assert char.value is True hass.states.async_set( - motion_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + motion_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() assert char.value is False char.set_value(True) hass.states.async_set( - motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() assert char.value is True @@ -708,7 +705,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events): doorbell_entity_id = "binary_sensor.doorbell" hass.states.async_set( - doorbell_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY} + doorbell_entity_id, + STATE_ON, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY}, ) await hass.async_block_till_done() entity_id = "camera.demo_camera" @@ -752,7 +751,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events): assert char2.value is None hass.states.async_set( - doorbell_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY} + doorbell_entity_id, + STATE_OFF, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY}, ) await hass.async_block_till_done() assert char.value is None @@ -761,7 +762,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events): char.set_value(True) char2.set_value(True) hass.states.async_set( - doorbell_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY} + doorbell_entity_id, + STATE_ON, + {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY}, ) await hass.async_block_till_done() assert char.value is None diff --git a/tests/components/homekit/test_type_humidifiers.py b/tests/components/homekit/test_type_humidifiers.py index 1a301e340b3..49b3ee72784 100644 --- a/tests/components/homekit/test_type_humidifiers.py +++ b/tests/components/homekit/test_type_humidifiers.py @@ -27,11 +27,11 @@ from homeassistant.components.humidifier.const import ( DOMAIN, SERVICE_SET_HUMIDITY, ) +from homeassistant.components.sensor import SensorDeviceClass from homeassistant.const import ( ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, ATTR_UNIT_OF_MEASUREMENT, - DEVICE_CLASS_HUMIDITY, PERCENTAGE, SERVICE_TURN_OFF, SERVICE_TURN_ON, @@ -313,7 +313,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver): humidity_sensor_entity_id, "42.0", { - ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY, ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, }, ) @@ -341,7 +341,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver): humidity_sensor_entity_id, "43.0", { - ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY, ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, }, ) @@ -353,7 +353,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver): humidity_sensor_entity_id, STATE_UNAVAILABLE, { - ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY, ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, }, ) diff --git a/tests/components/homekit/test_type_media_players.py b/tests/components/homekit/test_type_media_players.py index 6b24c731fab..7446b0d4c3a 100644 --- a/tests/components/homekit/test_type_media_players.py +++ b/tests/components/homekit/test_type_media_players.py @@ -18,7 +18,7 @@ from homeassistant.components.homekit.type_media_players import ( MediaPlayer, TelevisionMediaPlayer, ) -from homeassistant.components.media_player import DEVICE_CLASS_TV +from homeassistant.components.media_player import MediaPlayerDeviceClass from homeassistant.components.media_player.const import ( ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST, @@ -181,7 +181,7 @@ async def test_media_player_television(hass, hk_driver, events, caplog): entity_id, None, { - ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, + ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469, ATTR_MEDIA_VOLUME_MUTED: False, ATTR_INPUT_SOURCE_LIST: ["HDMI 1", "HDMI 2", "HDMI 3", "HDMI 4"], @@ -358,7 +358,7 @@ async def test_media_player_television_basic(hass, hk_driver, events, caplog): hass.states.async_set( entity_id, None, - {ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, ATTR_SUPPORTED_FEATURES: 384}, + {ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 384}, ) await hass.async_block_till_done() acc = TelevisionMediaPlayer(hass, hk_driver, "MediaPlayer", entity_id, 2, None) @@ -394,7 +394,7 @@ async def test_media_player_television_supports_source_select_no_sources( hass.states.async_set( entity_id, None, - {ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, ATTR_SUPPORTED_FEATURES: 3469}, + {ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469}, ) await hass.async_block_till_done() acc = TelevisionMediaPlayer(hass, hk_driver, "MediaPlayer", entity_id, 2, None) @@ -415,7 +415,7 @@ async def test_tv_restore(hass, hk_driver, events): "generic", "1234", suggested_object_id="simple", - original_device_class=DEVICE_CLASS_TV, + original_device_class=MediaPlayerDeviceClass.TV, ) registry.async_get_or_create( "media_player", @@ -426,7 +426,7 @@ async def test_tv_restore(hass, hk_driver, events): ATTR_INPUT_SOURCE_LIST: ["HDMI 1", "HDMI 2", "HDMI 3", "HDMI 4"], }, supported_features=3469, - original_device_class=DEVICE_CLASS_TV, + original_device_class=MediaPlayerDeviceClass.TV, ) hass.bus.async_fire(EVENT_HOMEASSISTANT_START, {}) @@ -465,7 +465,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl entity_id, None, { - ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, + ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469, ATTR_MEDIA_VOLUME_MUTED: False, ATTR_INPUT_SOURCE: "HDMI 3", @@ -489,7 +489,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl entity_id, None, { - ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, + ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469, ATTR_MEDIA_VOLUME_MUTED: False, ATTR_INPUT_SOURCE: "HDMI 90", @@ -503,7 +503,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl entity_id, None, { - ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, + ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469, ATTR_MEDIA_VOLUME_MUTED: False, ATTR_INPUT_SOURCE: "HDMI 91", diff --git a/tests/components/homekit/test_type_sensors.py b/tests/components/homekit/test_type_sensors.py index 98e44de7575..0b51e44660c 100644 --- a/tests/components/homekit/test_type_sensors.py +++ b/tests/components/homekit/test_type_sensors.py @@ -1,5 +1,6 @@ """Test different accessory types: Sensors.""" -from homeassistant.components.binary_sensor import DEVICE_CLASS_MOTION + +from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.homekit import get_accessory from homeassistant.components.homekit.const import ( PROP_CELSIUS, @@ -269,7 +270,7 @@ async def test_motion_uses_bool(hass, hk_driver): entity_id = "binary_sensor.motion" hass.states.async_set( - entity_id, STATE_UNKNOWN, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + entity_id, STATE_UNKNOWN, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() @@ -282,24 +283,26 @@ async def test_motion_uses_bool(hass, hk_driver): assert acc.char_detected.value is False - hass.states.async_set(entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}) + hass.states.async_set( + entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} + ) await hass.async_block_till_done() assert acc.char_detected.value is True hass.states.async_set( - entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() assert acc.char_detected.value is False hass.states.async_set( - entity_id, STATE_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + entity_id, STATE_HOME, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() assert acc.char_detected.value is True hass.states.async_set( - entity_id, STATE_NOT_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION} + entity_id, STATE_NOT_HOME, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION} ) await hass.async_block_till_done() assert acc.char_detected.value is False