fix: isolate fixture approval and identify dependencies by stage id
This commit is contained in:
@@ -3,6 +3,7 @@ from copy import deepcopy
|
|||||||
import json
|
import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import unittest
|
import unittest
|
||||||
|
from unittest.mock import patch
|
||||||
import uuid
|
import uuid
|
||||||
import wave
|
import wave
|
||||||
import zlib
|
import zlib
|
||||||
@@ -87,7 +88,9 @@ def production_fixture():
|
|||||||
for stage in project["stages"]:
|
for stage in project["stages"]:
|
||||||
if stage["stage_id"] in ("08-scenes", "09-entities"):
|
if stage["stage_id"] in ("08-scenes", "09-entities"):
|
||||||
stage["status"] = "complete"
|
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")]
|
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 = artifacts["08-scenes"]["payload"]["preview"]
|
||||||
preview["scene_file"].update(verified=True, sha256=run.digest(ROOT / job["source"]), blender_version="5.2.2 LTS")
|
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"")
|
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)
|
(ROOT / preview["samples"][0]["media"]["path"]).write_bytes(png)
|
||||||
review = next(r for r in project["reviews"] if r["review_id"] == "scenes")
|
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["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"] = "회귀 검사 전용 승인 기록이며 실제 영상의 사용자 승인이 아닙니다"
|
review["feedback"] = "회귀 검사 전용 승인 기록이며 실제 영상의 사용자 승인이 아닙니다"
|
||||||
reference = json.loads((ROOT / "templates/stages/10-references.json").read_text(encoding="utf-8"))
|
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:
|
if stage["stage_id"] in self.artifacts:
|
||||||
write(ROOT / stage["artifact_path"], self.artifacts[stage["stage_id"]])
|
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):
|
def test_preview_requires_no_new_scenes_approval(self):
|
||||||
validated = run.prepare(ROOT, self.job)
|
validated = run.prepare(ROOT, self.job)
|
||||||
self.assertEqual(validated["profile"], PROFILE)
|
self.assertEqual(validated["profile"], PROFILE)
|
||||||
|
|||||||
Reference in New Issue
Block a user