fix: isolate fixture approval and identify dependencies by stage id

This commit is contained in:
NINI
2026-10-10 00:10:01 +09:00
parent 8caed117be
commit 04628d2697
+15 -1
View File
@@ -3,6 +3,7 @@ from copy import deepcopy
import json
from pathlib import Path
import unittest
from unittest.mock import patch
import uuid
import wave
import zlib
@@ -87,7 +88,9 @@ def production_fixture():
for stage in project["stages"]:
if stage["stage_id"] in ("08-scenes", "09-entities"):
stage["status"] = "complete"
artifacts["09-entities"]["inputs"][1]["revision"] = 2
for ref in artifacts["09-entities"]["inputs"]:
if ref["stage_id"] == "08-scenes":
ref["revision"] = 2
artifacts["09-entities"]["payload"]["appearances"] = [dict(cut_id=c, character_ids=[], background_ids=[]) for c in ("c1", "c2")]
preview = artifacts["08-scenes"]["payload"]["preview"]
preview["scene_file"].update(verified=True, sha256=run.digest(ROOT / job["source"]), blender_version="5.2.2 LTS")
@@ -99,6 +102,7 @@ def production_fixture():
png += chunk(b"IDAT", zlib.compress((b"\0" + b"\0" * 270) * 160)) + chunk(b"IEND", b"")
(ROOT / preview["samples"][0]["media"]["path"]).write_bytes(png)
review = next(r for r in project["reviews"] if r["review_id"] == "scenes")
review["decision"] = "approved"
review["artifact_refs"] = [dict(stage_id=s, revision=1 if s == "07-cuts" else 2) for s in ("07-cuts", "08-scenes", "09-entities")]
review["feedback"] = "회귀 검사 전용 승인 기록이며 실제 영상의 사용자 승인이 아닙니다"
reference = json.loads((ROOT / "templates/stages/10-references.json").read_text(encoding="utf-8"))
@@ -186,6 +190,16 @@ class RequestTests(unittest.TestCase):
if stage["stage_id"] in self.artifacts:
write(ROOT / stage["artifact_path"], self.artifacts[stage["stage_id"]])
def test_fixture_uses_stage_id_for_reordered_inputs(self):
sample = fixture()
sample[2]["09-entities"]["inputs"].reverse()
with patch(__name__ + ".fixture", return_value=sample):
_, _, artifacts, job = production_fixture()
self.assertEqual(run.prepare(ROOT, job)["frames"], [0])
refs = {r["stage_id"]: r["revision"] for r in artifacts["09-entities"]["inputs"]}
self.assertEqual(refs["08-scenes"], 2)
self.assertEqual(refs["03-script"], 1)
def test_preview_requires_no_new_scenes_approval(self):
validated = run.prepare(ROOT, self.job)
self.assertEqual(validated["profile"], PROFILE)