@@ -0,0 +1,63 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user