diff --git a/tests/components/motion/test_trigger.py b/tests/components/motion/test_trigger.py index fc4da988dd4..e46a93958c7 100644 --- a/tests/components/motion/test_trigger.py +++ b/tests/components/motion/test_trigger.py @@ -4,12 +4,12 @@ from typing import Any import pytest -from homeassistant.const import ATTR_DEVICE_CLASS, CONF_ENTITY_ID, STATE_OFF, STATE_ON +from homeassistant.components.binary_sensor import BinarySensorDeviceClass +from homeassistant.const import ATTR_DEVICE_CLASS, STATE_OFF, STATE_ON from homeassistant.core import HomeAssistant, ServiceCall from tests.components.common import ( TriggerStateDescription, - arm_trigger, assert_trigger_behavior_any, assert_trigger_behavior_first, assert_trigger_behavior_last, @@ -52,14 +52,18 @@ async def test_motion_triggers_gated_by_labs_flag( trigger="motion.detected", target_states=[STATE_ON], other_states=[STATE_OFF], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), *parametrize_trigger_states( trigger="motion.cleared", target_states=[STATE_OFF], other_states=[STATE_ON], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), ], @@ -101,14 +105,18 @@ async def test_motion_trigger_binary_sensor_behavior_any( trigger="motion.detected", target_states=[STATE_ON], other_states=[STATE_OFF], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), *parametrize_trigger_states( trigger="motion.cleared", target_states=[STATE_OFF], other_states=[STATE_ON], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), ], @@ -150,14 +158,18 @@ async def test_motion_trigger_binary_sensor_behavior_first( trigger="motion.detected", target_states=[STATE_ON], other_states=[STATE_OFF], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), *parametrize_trigger_states( trigger="motion.cleared", target_states=[STATE_OFF], other_states=[STATE_ON], - required_filter_attributes={ATTR_DEVICE_CLASS: "motion"}, + required_filter_attributes={ + ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION + }, trigger_from_none=False, ), ], @@ -185,77 +197,3 @@ async def test_motion_trigger_binary_sensor_behavior_last( trigger_options=trigger_options, states=states, ) - - -# --- Device class exclusion tests --- - - -@pytest.mark.usefixtures("enable_labs_preview_features") -@pytest.mark.parametrize( - ( - "trigger_key", - "trigger_options", - "initial_state", - "target_state", - ), - [ - ( - "motion.detected", - {}, - STATE_OFF, - STATE_ON, - ), - ( - "motion.cleared", - {}, - STATE_ON, - STATE_OFF, - ), - ], -) -async def test_motion_trigger_excludes_non_motion_binary_sensor( - hass: HomeAssistant, - service_calls: list[ServiceCall], - trigger_key: str, - trigger_options: dict[str, Any], - initial_state: str, - target_state: str, -) -> None: - """Test motion trigger does not fire for entities without device_class motion.""" - entity_id_motion = "binary_sensor.test_motion" - entity_id_occupancy = "binary_sensor.test_occupancy" - - # Set initial states - hass.states.async_set( - entity_id_motion, initial_state, {ATTR_DEVICE_CLASS: "motion"} - ) - hass.states.async_set( - entity_id_occupancy, initial_state, {ATTR_DEVICE_CLASS: "occupancy"} - ) - await hass.async_block_till_done() - - await arm_trigger( - hass, - trigger_key, - trigger_options, - { - CONF_ENTITY_ID: [ - entity_id_motion, - entity_id_occupancy, - ] - }, - ) - - # Motion binary_sensor changes - should trigger - hass.states.async_set(entity_id_motion, target_state, {ATTR_DEVICE_CLASS: "motion"}) - await hass.async_block_till_done() - assert len(service_calls) == 1 - assert service_calls[0].data[CONF_ENTITY_ID] == entity_id_motion - service_calls.clear() - - # Occupancy binary_sensor changes - should NOT trigger (wrong device class) - hass.states.async_set( - entity_id_occupancy, target_state, {ATTR_DEVICE_CLASS: "occupancy"} - ) - await hass.async_block_till_done() - assert len(service_calls) == 0