import json import tempfile import unittest from pathlib import Path from zyrarbot.storage.guild_config_repository import GuildConfigRepository from zyrarbot.storage.json_file_store import JsonFileStore class GuildConfigRepositoryTest(unittest.TestCase): def test_settings_are_isolated_and_legacy_default_moves_to_first_guild(self): with tempfile.TemporaryDirectory() as directory: path = Path(directory) / "config.json" path.write_text(json.dumps({"default_plays": 7, "10": 123}), encoding="utf-8") repository = GuildConfigRepository(JsonFileStore(str(path)), fallback_plays=5) repository.migrate_legacy(10) self.assertEqual(repository.get_default_plays(10), 7) self.assertEqual(repository.get_notification_channel_id(10), 123) self.assertEqual(repository.get_default_plays(20), 5) repository.set_default_plays(20, 9) self.assertEqual(repository.get_default_plays(10), 7) self.assertEqual(repository.get_default_plays(20), 9) saved = json.loads(path.read_text(encoding="utf-8")) self.assertNotIn("default_plays", saved) self.assertEqual(saved["10"]["default_plays"], 7) self.assertEqual(saved["20"]["default_plays"], 9) if __name__ == "__main__": unittest.main()