Files
cmautobuy/client/test/test_settings_repository.py
T

58 lines
2.0 KiB
Python

"""SettingsRepository 测试。"""
import tempfile
import unittest
from pathlib import Path
from src.settings_repository import SettingsRepository
class SettingsRepositoryTests(unittest.TestCase):
def setUp(self) -> None:
self._temporary_directory = tempfile.TemporaryDirectory()
self.db_path = Path(self._temporary_directory.name) / "client.db"
self.repository = SettingsRepository(self.db_path)
def tearDown(self) -> None:
self._temporary_directory.cleanup()
def test_get_returns_default_for_missing_key(self) -> None:
self.assertEqual(
self.repository.get("automation.max_retries", default=3), 3
)
def test_set_get_and_update_json_value(self) -> None:
first = self.repository.set(
"client.info",
{"device_id": "CLIENT-001", "device_name": "办公室电脑"},
"2026-08-06T08:00:00Z",
)
self.assertEqual(first.updated_at, "2026-08-06T08:00:00Z")
self.assertEqual(
self.repository.get("client.info")["device_name"], "办公室电脑"
)
self.repository.set(
"client.info",
{"device_id": "CLIENT-001", "device_name": "仓库电脑"},
"2026-08-06T09:00:00Z",
)
record = self.repository.get_record("client.info")
self.assertEqual(record.value["device_name"], "仓库电脑")
self.assertEqual(record.updated_at, "2026-08-06T09:00:00Z")
def test_delete_reports_whether_record_existed(self) -> None:
self.repository.set("automation.dry_run", True)
self.assertTrue(self.repository.delete("automation.dry_run"))
self.assertFalse(self.repository.delete("automation.dry_run"))
self.assertIsNone(self.repository.get("automation.dry_run"))
def test_empty_setting_key_is_rejected(self) -> None:
with self.assertRaisesRegex(ValueError, "setting_key"):
self.repository.set(" ", True)
if __name__ == "__main__":
unittest.main()