From 06edc731c5fc937baa59ad57645b62e8eae95e32 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 18 Jun 2021 20:31:09 +0200 Subject: [PATCH] Add significant change support to select entity (#51978) --- .../components/select/significant_change.py | 19 ++++++++++++++++++ .../select/test_significant_change.py | 20 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 homeassistant/components/select/significant_change.py create mode 100644 tests/components/select/test_significant_change.py diff --git a/homeassistant/components/select/significant_change.py b/homeassistant/components/select/significant_change.py new file mode 100644 index 00000000000..835db314a38 --- /dev/null +++ b/homeassistant/components/select/significant_change.py @@ -0,0 +1,19 @@ +"""Helper to test significant Select state changes.""" +from __future__ import annotations + +from typing import Any + +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, +) -> bool: + """Test if state significantly changed.""" + return old_state != new_state diff --git a/tests/components/select/test_significant_change.py b/tests/components/select/test_significant_change.py new file mode 100644 index 00000000000..34ae5cad54e --- /dev/null +++ b/tests/components/select/test_significant_change.py @@ -0,0 +1,20 @@ +"""Test the select significant change platform.""" +from homeassistant.components.select.significant_change import ( + async_check_significant_change, +) +from homeassistant.core import HomeAssistant + + +async def test_significant_change(hass: HomeAssistant) -> None: + """Detect select significant change.""" + attrs1 = {"options": ["option1", "option2"]} + attrs2 = {"options": ["option1", "option2", "option3"]} + + assert not async_check_significant_change( + hass, "option1", attrs1, "option1", attrs1 + ) + assert not async_check_significant_change( + hass, "option1", attrs1, "option1", attrs2 + ) + assert async_check_significant_change(hass, "option1", attrs1, "option2", attrs1) + assert async_check_significant_change(hass, "option1", attrs1, "option2", attrs2)