Files
Artemis-Eapil/tests/unit/test_exploration_exports.py
T

51 lines
2.2 KiB
Python

from apps.admin_console.services.automation_store import AutomationStore
from apps.admin_console.services import exploration_evidence
from artemis.config.exploration import ExplorationConfig
from artemis.exploration.models import CaseDraft
from artemis.exploration.store import ExplorationStore
def test_archive_links_only_current_run_media_and_keeps_case_provenance(tmp_path, monkeypatch):
repository = ExplorationStore(AutomationStore(tmp_path / "history.db"))
session = repository.create("探索", ExplorationConfig(), {}, "create")
first = repository.reserve_run(
session["id"], "first", kind="exploration", goal="探索", task_config={}
)
repository.finish_run(first["id"], {"status": "completed"})
second = repository.reserve_run(
session["id"], "second", kind="exploration", goal="继续", task_config={}
)
repository.finish_run(second["id"], {"status": "completed"})
repository.save_case(
session["id"],
CaseDraft(name="用例", goal="已保存提示词"),
0,
"save",
source_run_id=second["id"],
)
for run in (first, second):
repository.database.put(
"exploration_demo",
run["id"],
{
"id": run["id"],
"exploration_id": session["id"],
"run_id": run["id"],
"media": [{"kind": "android", "segments": [{"file": "evidence/demo.mp4"}]}],
},
)
monkeypatch.setattr(exploration_evidence, "explorations", repository)
monkeypatch.setattr(exploration_evidence, "task_root", lambda _: tmp_path)
index = exploration_evidence.exploration_index(
second["id"], {(tmp_path / "evidence/demo.mp4").resolve(): "任务录屏/人工示范/demo.mp4"}
)
old, current = index["demonstrations"]
assert old["media"][0]["segments"][0]["file"] is None
assert current["media"][0]["segments"][0]["file"] == "任务录屏/人工示范/demo.mp4"
assert current["media"][0]["segments"][0]["trace_file"] == "evidence/demo.mp4"
assert index["cases"][0]["source_run_id"] == second["id"]
assert (
repository.database.get("exploration_demo", second["id"])["media"][0]["segments"][0]["file"]
== "evidence/demo.mp4"
)