51 lines
2.2 KiB
Python
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"
|
|
)
|