From 11cd89d6b8aa45657727ba27f232232ec96fcf5d Mon Sep 17 00:00:00 2001 From: Rob Walsh Date: Wed, 5 Aug 2026 14:53:04 -0600 Subject: [PATCH] fix: prevent on_change_domain from resetting settings when domain matches current_domain --- actions/cores/base_core/base_core.py | 3 ++- .../test_base_core_on_change_domain.py | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/actions/cores/base_core/base_core.py b/actions/cores/base_core/base_core.py index 132cfc3..3604166 100644 --- a/actions/cores/base_core/base_core.py +++ b/actions/cores/base_core/base_core.py @@ -111,8 +111,9 @@ def on_change_domain(self, _, domain, old_domain): """Execute when the domain is changed.""" domain = str(domain) if domain is not None else None old_domain = str(old_domain) if old_domain is not None else None + current_domain = self.settings.get_domain() if self.settings else None - if old_domain != domain: + if old_domain != domain and domain != current_domain: entity = self.settings.get_entity() if entity and self.track_entity: self.plugin_base.backend.remove_tracked_entity(entity, self.refresh) diff --git a/test/actions/cores/base_core/test_base_core_on_change_domain.py b/test/actions/cores/base_core/test_base_core_on_change_domain.py index d1b6f97..88e1431 100644 --- a/test/actions/cores/base_core/test_base_core_on_change_domain.py +++ b/test/actions/cores/base_core/test_base_core_on_change_domain.py @@ -45,6 +45,29 @@ def test_on_change_domain_old_and_new_equal(self, set_enabled_disabled_mock, loa load_entities_mock.assert_called_once() set_enabled_disabled_mock.assert_called_once() + @patch.object(BaseCore, "create_ui_elements") + @patch.object(BaseCore, "_create_event_assigner") + @patch.object(BaseCore, "_load_entities") + @patch.object(BaseCore, "set_enabled_disabled") + def test_on_change_domain_matches_current_domain(self, set_enabled_disabled_mock, load_entities_mock, _, __): + settings_mock = Mock() + settings_mock.get_domain = Mock(return_value="switch") + settings_mock.reset = Mock() + + entity_combo_mock = Mock() + + instance = BaseCore(Mock(), True) + instance.initialized = True + instance.settings = settings_mock + instance.entity_combo = entity_combo_mock + + # Widget initializes with old_domain=None and domain="switch" (which equals current_domain) + instance.on_change_domain(None, "switch", None) + + settings_mock.reset.assert_not_called() + load_entities_mock.assert_called_once() + set_enabled_disabled_mock.assert_called_once() + @patch.object(BaseCore, "create_ui_elements") @patch.object(BaseCore, "_create_event_assigner") @patch.object(BaseCore, "_load_entities")