Files
site/WESP_REL/tests/test_auto_update_db.py
T
2026-07-17 12:57:18 +03:00

73 lines
2.5 KiB
Python

import os
import sqlite3
import tempfile
import unittest
from app.services.auto_update_db import load_auto_update_dict, merge_auto_update_settings
class AutoUpdateDbTests(unittest.TestCase):
def setUp(self) -> None:
self._root = tempfile.mkdtemp(prefix="wesp-auto-update-db-")
data = os.path.join(self._root, "data")
os.makedirs(data, exist_ok=True)
self._db = os.path.join(data, "recipes.db")
conn = sqlite3.connect(self._db)
conn.execute(
"""
CREATE TABLE auto_update_settings (
id INTEGER NOT NULL PRIMARY KEY,
enabled INTEGER NOT NULL DEFAULT 0,
auto_install INTEGER NOT NULL DEFAULT 0,
gitea_url VARCHAR(512) NOT NULL DEFAULT '',
gitea_owner VARCHAR(255) NOT NULL DEFAULT '',
gitea_repo VARCHAR(255) NOT NULL DEFAULT '',
repository_url VARCHAR(512) NOT NULL DEFAULT '',
check_interval_sec INTEGER NOT NULL DEFAULT 3600,
CHECK (id = 1)
)
"""
)
conn.commit()
conn.close()
def test_merge_inserts_and_updates_partially(self) -> None:
merge_auto_update_settings(
self._root,
{
"enabled": True,
"gitea_owner": "farm",
"gitea_repo": "wesp",
"check_interval_sec": 120,
},
)
au = load_auto_update_dict(self._root)
self.assertIsNotNone(au)
assert au is not None
self.assertTrue(au["enabled"])
self.assertFalse(au["auto_install"])
self.assertEqual(au["gitea_owner"], "farm")
self.assertEqual(au["gitea_repo"], "wesp")
self.assertEqual(au["check_interval_sec"], 120)
merge_auto_update_settings(
self._root,
{"auto_install": True, "gitea_url": "https://git.example.com"},
)
au2 = load_auto_update_dict(self._root)
self.assertIsNotNone(au2)
assert au2 is not None
self.assertTrue(au2["enabled"])
self.assertTrue(au2["auto_install"])
self.assertEqual(au2["gitea_url"], "https://git.example.com")
self.assertEqual(au2["gitea_owner"], "farm")
def test_merge_missing_db_raises(self) -> None:
empty_root = tempfile.mkdtemp(prefix="wesp-no-db-")
with self.assertRaises(FileNotFoundError):
merge_auto_update_settings(empty_root, {"enabled": True})
if __name__ == "__main__":
unittest.main()