From e7cb7677a04035d682bba33b13c4fedfd4d704bf Mon Sep 17 00:00:00 2001 From: Dusk-92 Date: Wed, 2 Sep 2026 11:42:29 +0200 Subject: [PATCH] Test all-details toggle behavior --- tests/test_safety.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tests/test_safety.py b/tests/test_safety.py index c2f3fc9..ad6d674 100644 --- a/tests/test_safety.py +++ b/tests/test_safety.py @@ -881,18 +881,24 @@ class WowPresenceDetailPreferenceTests(unittest.TestCase): } return tool - def test_detail_mask_supports_race_and_master_switch(self): + def test_detail_mask_supports_race_and_all_details_switch(self): tool = self.make_tool() self.assertEqual( tool._discord_broadcast_mask(), remote_packages.WOWPRESENCE_SHARE_ALL, ) + # The master switch always means "show all" even if a variable is + # changed programmatically while its checkbox would be disabled. tool.discord_detail_vars["race"].set(False) - self.assertEqual(tool._discord_broadcast_mask(), 63) + self.assertEqual( + tool._discord_broadcast_mask(), + remote_packages.WOWPRESENCE_SHARE_ALL, + ) + # Once the master is off, the individual choices become authoritative. tool.discord_show_character_details.set(False) - self.assertEqual(tool._discord_broadcast_mask(), 0) + self.assertEqual(tool._discord_broadcast_mask(), 63) self.assertFalse(tool.discord_detail_vars["race"].get()) self.assertTrue(tool.discord_detail_vars["zone"].get()) @@ -906,7 +912,7 @@ class WowPresenceDetailPreferenceTests(unittest.TestCase): tool._load_wowpresence_broadcast_preferences(root) - self.assertTrue(tool.discord_show_character_details.get()) + self.assertFalse(tool.discord_show_character_details.get()) self.assertTrue(tool.discord_detail_vars["name"].get()) self.assertTrue(tool.discord_detail_vars["guild"].get()) self.assertTrue(tool.discord_detail_vars["faction"].get()) @@ -915,6 +921,23 @@ class WowPresenceDetailPreferenceTests(unittest.TestCase): self.assertFalse(tool.discord_detail_vars["zone"].get()) self.assertTrue(tool.discord_detail_vars["race"].get()) + def test_legacy_default_mask_selects_all_details(self): + tool = self.make_tool() + with tempfile.TemporaryDirectory() as root: + data_dir = remote_packages.ensure_wowpresence_config(root) + flags = os.path.join(data_dir, "discord_broadcast_flags") + with open(flags, "w", encoding="ascii") as handle: + handle.write("63\n") + + tool._load_wowpresence_broadcast_preferences(root) + + self.assertTrue(tool.discord_show_character_details.get()) + self.assertTrue(all(var.get() for var in tool.discord_detail_vars.values())) + self.assertEqual( + tool._discord_broadcast_mask(), + remote_packages.WOWPRESENCE_SHARE_ALL, + ) + def test_broadcast_flag_writer_preserves_other_config(self): with tempfile.TemporaryDirectory() as root: data_dir = remote_packages.ensure_wowpresence_config(root)