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

64 lines
2.0 KiB
Python

"""Tests for update_state_store."""
from __future__ import annotations
import json
import os
import tempfile
import unittest
from app.services.update_state_store import (
mark_failed,
mark_in_progress,
mark_rolled_back,
mark_success,
read_update_state,
update_state_path,
write_update_state,
)
class UpdateStateStoreTests(unittest.TestCase):
def setUp(self) -> None:
self._tmp = tempfile.mkdtemp(prefix="wesp-state-")
self.base = self._tmp
def tearDown(self) -> None:
import shutil
shutil.rmtree(self._tmp, ignore_errors=True)
def test_write_read_cycle(self) -> None:
write_update_state(self.base, {"status": "in_progress", "message": "x"})
st = read_update_state(self.base)
self.assertEqual(st["status"], "in_progress")
self.assertEqual(st["message"], "x")
def test_idle_when_missing(self) -> None:
self.assertEqual(read_update_state(self.base)["status"], "idle")
def test_corrupt_json_returns_idle(self) -> None:
os.makedirs(os.path.join(self.base, "data"), exist_ok=True)
with open(update_state_path(self.base), "w", encoding="utf-8") as f:
f.write("{not json")
self.assertEqual(read_update_state(self.base)["status"], "idle")
def test_mark_helpers(self) -> None:
mark_in_progress(
self.base,
target_version="2.0.0",
previous_version="1.0.0",
backup_path="/tmp/b",
)
mark_failed(self.base, message="fail", stage="deps")
st = read_update_state(self.base)
self.assertEqual(st["status"], "failed")
mark_rolled_back(self.base, previous_version="1.0.0", message="rolled")
self.assertEqual(read_update_state(self.base)["status"], "rolled_back")
mark_success(self.base, target_version="2.0.0")
self.assertEqual(read_update_state(self.base)["status"], "success")
if __name__ == "__main__":
unittest.main()