From cd64ea0b31ff335c70237a25f6bec771e92a564e Mon Sep 17 00:00:00 2001 From: Dusk-92 Date: Wed, 2 Sep 2026 11:26:46 +0200 Subject: [PATCH] Test Discord Rich Presence detail preferences --- tests/test_safety.py | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tests/test_safety.py b/tests/test_safety.py index c642215..7d2a3ca 100644 --- a/tests/test_safety.py +++ b/tests/test_safety.py @@ -8,6 +8,7 @@ from unittest import mock import remote_packages import setup_tool from setup_tool import WowSetupTool +from setup_tool_dynamic import ModernWowSetupTool class FakeVar: @@ -865,6 +866,79 @@ class WowPresenceIntegrationTests(unittest.TestCase): ) +class WowPresenceDetailPreferenceTests(unittest.TestCase): + def make_tool(self): + tool = ModernWowSetupTool.__new__(ModernWowSetupTool) + tool.discord_show_character_details = FakeVar(True) + tool.discord_detail_vars = { + "name": FakeVar(True), + "guild": FakeVar(True), + "race": FakeVar(True), + "faction": FakeVar(True), + "class": FakeVar(True), + "level": FakeVar(True), + "zone": FakeVar(True), + } + return tool + + def test_detail_mask_supports_race_and_master_switch(self): + tool = self.make_tool() + self.assertEqual( + tool._discord_broadcast_mask(), + remote_packages.WOWPRESENCE_SHARE_ALL, + ) + + tool.discord_detail_vars["race"].set(False) + self.assertEqual(tool._discord_broadcast_mask(), 63) + + tool.discord_show_character_details.set(False) + self.assertEqual(tool._discord_broadcast_mask(), 0) + self.assertTrue(tool.discord_detail_vars["race"].get()) + self.assertTrue(tool.discord_detail_vars["zone"].get()) + + def test_legacy_six_bit_mask_keeps_race_enabled(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("31\n") + + tool._load_wowpresence_broadcast_preferences(root) + + self.assertTrue(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()) + self.assertTrue(tool.discord_detail_vars["class"].get()) + self.assertTrue(tool.discord_detail_vars["level"].get()) + self.assertFalse(tool.discord_detail_vars["zone"].get()) + self.assertTrue(tool.discord_detail_vars["race"].get()) + + def test_broadcast_flag_writer_preserves_other_config(self): + with tempfile.TemporaryDirectory() as root: + data_dir = remote_packages.ensure_wowpresence_config(root) + app_id = os.path.join(data_dir, "discord_application_id") + with open(app_id, "w", encoding="ascii") as handle: + handle.write("123456789012345678\n") + + path = remote_packages.write_wowpresence_broadcast_flags( + root, + remote_packages.WOWPRESENCE_SHARE_ALL, + ) + self.assertEqual( + remote_packages.read_wowpresence_broadcast_flags(root), + 127, + ) + with open(path, "r", encoding="ascii") as handle: + self.assertEqual(handle.read().strip(), "127") + with open(app_id, "r", encoding="ascii") as handle: + self.assertEqual(handle.read().strip(), "123456789012345678") + + with self.assertRaises(ValueError): + remote_packages.write_wowpresence_broadcast_flags(root, 128) + + class SettingsRecoveryTests(unittest.TestCase): def test_corrupt_settings_are_left_untouched_and_legacy_state_is_recovered(self): tool = WowSetupTool.__new__(WowSetupTool)