From daf19346d41ae948e79e6e1abcb5d4a181ef0e89 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 18 May 2026 14:53:45 +0000 Subject: [PATCH 1/3] test: update show_icon tests for browse button and icon gating Agent-Logs-Url: https://github.com/gensyn/HomeAssistantPlugin/sessions/6527bd55-e8ca-42ab-8a59-63115fd1298c Co-authored-by: gensyn <36128035+gensyn@users.noreply.github.com> --- test/actions/show_icon/test_icon_action.py | 10 ++++++++-- test/actions/show_icon/test_icon_window.py | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/test/actions/show_icon/test_icon_action.py b/test/actions/show_icon/test_icon_action.py index cb8ff5a..176c760 100644 --- a/test/actions/show_icon/test_icon_action.py +++ b/test/actions/show_icon/test_icon_action.py @@ -10,6 +10,7 @@ sys.path.insert(0, absolute_plugin_path) from HomeAssistantPlugin.actions.show_icon import icon_const +from HomeAssistantPlugin.actions.show_icon import icon_helper from HomeAssistantPlugin.actions.show_icon.icon_action import ShowIcon from HomeAssistantPlugin.actions.show_icon.icon_customization import IconCustomization from HomeAssistantPlugin.actions.show_icon.icon_row import IconRow @@ -68,9 +69,12 @@ def test_get_config_rows(self): @patch('HomeAssistantPlugin.actions.show_icon.icon_action.EntryRow') @patch('HomeAssistantPlugin.actions.show_icon.icon_action.ColorButtonRow') @patch('HomeAssistantPlugin.actions.show_icon.icon_action.ScaleRow') - def testcreate_ui_elements(self, scale_row_mock, color_button_row_mock, entry_row_mock, super_create_ui_elements_mock): + @patch('HomeAssistantPlugin.actions.show_icon.icon_action.Button') + def testcreate_ui_elements(self, button_mock, scale_row_mock, color_button_row_mock, entry_row_mock, super_create_ui_elements_mock): instance = ShowIcon.__new__(ShowIcon) instance._reload = Mock() + instance.lm = Mock() + instance.lm.get.return_value = "Browse" instance.create_ui_elements() @@ -162,10 +166,12 @@ def test_set_enabled_disabled_success(self, super_set_enabled_disabled_mock): instance.settings = Mock() instance.settings.get_domain.return_value = "domain" instance.settings.get_entity.return_value = "entity" + instance.settings.get_icon.return_value = next(iter(icon_helper.MDI_ICONS)) instance.icon = Mock() instance.color = Mock() instance.scale = Mock() instance.opacity = Mock() + instance.lm = Mock() instance.set_enabled_disabled() @@ -273,4 +279,4 @@ def test_get_domains(self): result = instance._get_domains() instance.plugin_base.backend.get_domains_for_entities.assert_called_once() - self.assertEqual(result, ["domain1", "domain2"]) \ No newline at end of file + self.assertEqual(result, ["domain1", "domain2"]) diff --git a/test/actions/show_icon/test_icon_window.py b/test/actions/show_icon/test_icon_window.py index 4c6180c..6a5fd56 100644 --- a/test/actions/show_icon/test_icon_window.py +++ b/test/actions/show_icon/test_icon_window.py @@ -24,8 +24,9 @@ class TestIconWindow(unittest.TestCase): @patch.object(IconWindow, "_create_scale") @patch.object(IconWindow, "_create_scale_entry") @patch.object(IconWindow, "_create_label") + @patch('HomeAssistantPlugin.actions.show_icon.icon_window.Button') def test_init(self, create_label_mock, create_scale_entry_mock, create_scale_mock, create_color_button_mock, - create_entry_mock, create_check_button_mock, after_init_mock, set_title_mock, + create_entry_mock, create_check_button_mock, after_init_mock, set_title_mock, button_mock, customization_window_init_mock): lm = Mock() lm.get.return_value = "Test Title" @@ -51,7 +52,7 @@ def super_init(instance, lm, *args, **kwargs): customization_window_init_mock.assert_called_once_with(instance, lm, attributes, callback, current, index) # with instance because of autospec set_title_mock.assert_called_once_with("Test Title") - self.assertEqual(14, instance.grid_fields.attach.call_count) + self.assertEqual(15, instance.grid_fields.attach.call_count) after_init_mock.assert_called_once() @patch( From 3db6824912d73443e166a30cdc5d2f444f54a09a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 18 May 2026 14:56:22 +0000 Subject: [PATCH 2/3] test: align on_ready and icon window tests with merged behavior Agent-Logs-Url: https://github.com/gensyn/HomeAssistantPlugin/sessions/6527bd55-e8ca-42ab-8a59-63115fd1298c Co-authored-by: gensyn <36128035+gensyn@users.noreply.github.com> --- .../cores/base_core/test_base_core_on_ready.py | 13 +++++++++---- test/actions/show_icon/test_icon_window.py | 7 +++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/test/actions/cores/base_core/test_base_core_on_ready.py b/test/actions/cores/base_core/test_base_core_on_ready.py index 1dc9076..0c06631 100644 --- a/test/actions/cores/base_core/test_base_core_on_ready.py +++ b/test/actions/cores/base_core/test_base_core_on_ready.py @@ -18,7 +18,8 @@ class TestBaseCoreOnReady(unittest.TestCase): @patch.object(BaseCore, "_create_event_assigner") @patch.object(BaseCore, "_load_domains") @patch.object(BaseCore, "_load_entities") - def test_on_read_no_entity(self, load_entities_mock, load_domains_mock, _, __): + @patch('HomeAssistantPlugin.actions.cores.base_core.base_core.migrate_settings') + def test_on_read_no_entity(self, migrate_settings_mock, load_entities_mock, load_domains_mock, _, __): track_entity = True settings_implementation = Mock() @@ -28,6 +29,7 @@ def test_on_read_no_entity(self, load_entities_mock, load_domains_mock, _, __): instance = BaseCore(settings_implementation, track_entity) instance.on_ready() + migrate_settings_mock.assert_called_once_with(instance) instance.plugin_base.backend.add_action_ready_callback.assert_called_once_with(instance.on_ready) settings_implementation.get_entity.assert_called_once() instance.plugin_base.backend.add_tracked_entity.assert_not_called() @@ -38,7 +40,8 @@ def test_on_read_no_entity(self, load_entities_mock, load_domains_mock, _, __): @patch.object(BaseCore, "_create_event_assigner") @patch.object(BaseCore, "_load_domains") @patch.object(BaseCore, "_load_entities") - def test_on_read_entity_not_tracked(self, load_entities_mock, load_domains_mock, _, __): + @patch('HomeAssistantPlugin.actions.cores.base_core.base_core.migrate_settings') + def test_on_read_entity_not_tracked(self, migrate_settings_mock, load_entities_mock, load_domains_mock, _, __): track_entity = False settings_implementation = Mock() @@ -48,6 +51,7 @@ def test_on_read_entity_not_tracked(self, load_entities_mock, load_domains_mock, instance = BaseCore(settings_implementation, track_entity) instance.on_ready() + migrate_settings_mock.assert_called_once_with(instance) instance.plugin_base.backend.add_action_ready_callback.assert_called_once_with(instance.on_ready) settings_implementation.get_entity.assert_called_once() instance.plugin_base.backend.add_tracked_entity.assert_not_called() @@ -58,7 +62,8 @@ def test_on_read_entity_not_tracked(self, load_entities_mock, load_domains_mock, @patch.object(BaseCore, "_create_event_assigner") @patch.object(BaseCore, "_load_domains") @patch.object(BaseCore, "_load_entities") - def test_on_read_success(self, load_entities_mock, load_domains_mock, _, __): + @patch('HomeAssistantPlugin.actions.cores.base_core.base_core.migrate_settings') + def test_on_read_success(self, migrate_settings_mock, load_entities_mock, load_domains_mock, _, __): track_entity = True settings_implementation = Mock() @@ -68,9 +73,9 @@ def test_on_read_success(self, load_entities_mock, load_domains_mock, _, __): instance = BaseCore(settings_implementation, track_entity) instance.on_ready() + migrate_settings_mock.assert_called_once_with(instance) instance.plugin_base.backend.add_action_ready_callback.assert_called_once_with(instance.on_ready) settings_implementation.get_entity.assert_called_once() instance.plugin_base.backend.add_tracked_entity.assert_called_once_with("entity", instance.refresh) load_entities_mock.assert_called_once() load_domains_mock.assert_called_once() - diff --git a/test/actions/show_icon/test_icon_window.py b/test/actions/show_icon/test_icon_window.py index 6a5fd56..4fe8a6b 100644 --- a/test/actions/show_icon/test_icon_window.py +++ b/test/actions/show_icon/test_icon_window.py @@ -25,8 +25,8 @@ class TestIconWindow(unittest.TestCase): @patch.object(IconWindow, "_create_scale_entry") @patch.object(IconWindow, "_create_label") @patch('HomeAssistantPlugin.actions.show_icon.icon_window.Button') - def test_init(self, create_label_mock, create_scale_entry_mock, create_scale_mock, create_color_button_mock, - create_entry_mock, create_check_button_mock, after_init_mock, set_title_mock, button_mock, + def test_init(self, button_mock, create_label_mock, create_scale_entry_mock, create_scale_mock, create_color_button_mock, + create_entry_mock, create_check_button_mock, after_init_mock, set_title_mock, customization_window_init_mock): lm = Mock() lm.get.return_value = "Test Title" @@ -140,8 +140,7 @@ def test_on_add_button_icon_not_valid(self, super_on_add_button_mock): instance.check_icon = Mock() instance.check_icon.get_active.return_value = True instance.icon = Mock() - instance.icon.get_text.return_value = "mdi:home" - instance.icons = ["not_home"] + instance.icon.get_text.return_value = "" instance.on_add_button() super_on_add_button_mock.assert_called_once() From e3cd90d431c2fae28c5f2e102da186f96daa88cb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 18 May 2026 14:56:57 +0000 Subject: [PATCH 3/3] test: clarify icon window validation test name Agent-Logs-Url: https://github.com/gensyn/HomeAssistantPlugin/sessions/6527bd55-e8ca-42ab-8a59-63115fd1298c Co-authored-by: gensyn <36128035+gensyn@users.noreply.github.com> --- test/actions/show_icon/test_icon_window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/actions/show_icon/test_icon_window.py b/test/actions/show_icon/test_icon_window.py index 4fe8a6b..a716bce 100644 --- a/test/actions/show_icon/test_icon_window.py +++ b/test/actions/show_icon/test_icon_window.py @@ -133,7 +133,7 @@ def test_on_add_button_super_false(self, super_on_add_button_mock): @patch( 'HomeAssistantPlugin.actions.cores.customization_core.customization_window.CustomizationWindow.on_add_button') - def test_on_add_button_icon_not_valid(self, super_on_add_button_mock): + def test_on_add_button_icon_checked_but_empty(self, super_on_add_button_mock): super_on_add_button_mock.return_value = True instance = IconWindow.__new__(IconWindow)