import json import tempfile import unittest from pathlib import Path from unittest.mock import mock_open, patch import identity from agent.modes import ModeStore class ModeConfigTest(unittest.TestCase): def test_admin_chat_other_command_and_saved_override(self): with tempfile.TemporaryDirectory() as tmp: store = ModeStore(Path(tmp) / "modes.db") config = json.dumps({"chat_mode": {"default": "command", "admin": "chat", "group": "command"}}) with patch("pathlib.Path.open", mock_open(read_data=config)), \ patch.object(identity, "is_admin", side_effect=lambda uid: uid == 1): self.assertEqual(store.get_mode("tg", 1), "chat") self.assertEqual(store.get_mode("tg", 2), "command") self.assertEqual(store.get_mode("tg", 1, 123), "command") store.set_mode("tg", 2, "chat") self.assertEqual(store.get_mode("tg", 2), "chat") store.set_mode("tg", 1, "command") self.assertEqual(store.get_mode("tg", 1), "command") if __name__ == "__main__": unittest.main()