34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
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()
|