diff --git a/homeassistant/components/lock/significant_change.py b/homeassistant/components/lock/significant_change.py new file mode 100644 index 00000000000..59a3b1a95c5 --- /dev/null +++ b/homeassistant/components/lock/significant_change.py @@ -0,0 +1,20 @@ +"""Helper to test significant Lock state changes.""" +from typing import Any, Optional + +from homeassistant.core import HomeAssistant, callback + + +@callback +def async_check_significant_change( + hass: HomeAssistant, + old_state: str, + old_attrs: dict, + new_state: str, + new_attrs: dict, + **kwargs: Any, +) -> Optional[bool]: + """Test if state significantly changed.""" + if old_state != new_state: + return True + + return False diff --git a/tests/components/lock/test_significant_change.py b/tests/components/lock/test_significant_change.py new file mode 100644 index 00000000000..a9ffbc0d1c4 --- /dev/null +++ b/tests/components/lock/test_significant_change.py @@ -0,0 +1,23 @@ +"""Test the Lock significant change platform.""" +from homeassistant.components.lock.significant_change import ( + async_check_significant_change, +) + + +async def test_significant_change(): + """Detect Lock significant changes.""" + old_attrs = {"attr_1": "a"} + new_attrs = {"attr_1": "b"} + + assert ( + async_check_significant_change(None, "locked", old_attrs, "locked", old_attrs) + is False + ) + assert ( + async_check_significant_change(None, "locked", old_attrs, "locked", new_attrs) + is False + ) + assert ( + async_check_significant_change(None, "locked", old_attrs, "unlocked", old_attrs) + is True + )