From 07a4422a704aafbb6d42b3155312b9dbbc3428b2 Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Sat, 30 Jan 2021 02:05:58 -0500 Subject: [PATCH] Implement person significant change (#45713) --- .../components/person/significant_change.py | 21 +++++++++++++++++++ .../person/test_significant_change.py | 16 ++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 homeassistant/components/person/significant_change.py create mode 100644 tests/components/person/test_significant_change.py diff --git a/homeassistant/components/person/significant_change.py b/homeassistant/components/person/significant_change.py new file mode 100644 index 00000000000..d9c1ec6cc23 --- /dev/null +++ b/homeassistant/components/person/significant_change.py @@ -0,0 +1,21 @@ +"""Helper to test significant Person 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 new_state != old_state: + return True + + return False diff --git a/tests/components/person/test_significant_change.py b/tests/components/person/test_significant_change.py new file mode 100644 index 00000000000..1b4f6940e90 --- /dev/null +++ b/tests/components/person/test_significant_change.py @@ -0,0 +1,16 @@ +"""Test the Person significant change platform.""" +from homeassistant.components.person.significant_change import ( + async_check_significant_change, +) + + +async def test_significant_change(): + """Detect Person significant changes and ensure that attribute changes do not trigger a significant change.""" + old_attrs = {"source": "device_tracker.wifi_device"} + new_attrs = {"source": "device_tracker.gps_device"} + assert not async_check_significant_change( + None, "home", old_attrs, "home", new_attrs + ) + assert async_check_significant_change( + None, "home", new_attrs, "not_home", new_attrs + )