64 lines
2.3 KiB
Python
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"])
|