Test Discord Rich Presence detail preferences
This commit is contained in:
@@ -8,6 +8,7 @@ from unittest import mock
|
|||||||
import remote_packages
|
import remote_packages
|
||||||
import setup_tool
|
import setup_tool
|
||||||
from setup_tool import WowSetupTool
|
from setup_tool import WowSetupTool
|
||||||
|
from setup_tool_dynamic import ModernWowSetupTool
|
||||||
|
|
||||||
|
|
||||||
class FakeVar:
|
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):
|
class SettingsRecoveryTests(unittest.TestCase):
|
||||||
def test_corrupt_settings_are_left_untouched_and_legacy_state_is_recovered(self):
|
def test_corrupt_settings_are_left_untouched_and_legacy_state_is_recovered(self):
|
||||||
tool = WowSetupTool.__new__(WowSetupTool)
|
tool = WowSetupTool.__new__(WowSetupTool)
|
||||||
|
|||||||
Reference in New Issue
Block a user