Files
Aislo/tests/test_common_util_workflow.py
T
2026-07-05 21:27:23 +09:00

64 lines
2.3 KiB
Python

import json
import tempfile
import unittest
from pathlib import Path
from common_util.common_util_workflow import (
load_project_workflow,
patch_project_workflow_stale,
)
class LoadProjectWorkflowTest(unittest.TestCase):
def test_load_project_workflow(self) -> None:
with tempfile.TemporaryDirectory() as temporary_directory:
project_root = Path(temporary_directory)
self.assertEqual(
load_project_workflow(project_root),
{
"current_stage": "scan",
"completed": [],
"stale_from": None,
"stage1_confirmed": None,
},
)
saved = {"current_stage": "route", "completed": ["scan"]}
(project_root / "workflow.json").write_text(
json.dumps(saved, ensure_ascii=False),
encoding="utf-8",
)
self.assertEqual(load_project_workflow(project_root), saved)
(project_root / "workflow.json").write_text("[]", encoding="utf-8")
with self.assertRaises(ValueError):
load_project_workflow(project_root)
def test_patch_project_workflow_stale(self) -> None:
with tempfile.TemporaryDirectory() as temporary_directory:
project_root = Path(temporary_directory)
workflow_path = project_root / "workflow.json"
patch_project_workflow_stale(project_root, "route")
self.assertFalse(workflow_path.exists())
saved = {
"current_stage": "surface",
"completed": ["scan"],
"stale_from": None,
"stage1_confirmed": {"method": "tin"},
}
workflow_path.write_text(
json.dumps(saved, ensure_ascii=False),
encoding="utf-8",
)
patch_project_workflow_stale(project_root, "route")
updated = json.loads(workflow_path.read_text(encoding="utf-8"))
self.assertEqual(updated["stale_from"], "route")
self.assertEqual(updated["current_stage"], saved["current_stage"])
self.assertEqual(updated["completed"], saved["completed"])
self.assertEqual(updated["stage1_confirmed"], saved["stage1_confirmed"])