56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""Tests for vlm.review_display helpers."""
|
|
|
|
from pathlib import Path
|
|
|
|
from vlm.review_display import (
|
|
build_csv_rows,
|
|
format_paths_for_detail,
|
|
review_row_status_symbol,
|
|
risk_flags_to_labels,
|
|
)
|
|
|
|
|
|
def test_risk_flags_to_labels():
|
|
assert "需人工判断" in risk_flags_to_labels("manual_review")
|
|
assert "目标冲突" in risk_flags_to_labels("conflict")
|
|
assert risk_flags_to_labels("") == ""
|
|
assert risk_flags_to_labels("unknown_flag") == "unknown_flag"
|
|
|
|
|
|
def test_format_paths_for_detail_relative():
|
|
root = Path("/media/lib")
|
|
text = format_paths_for_detail(
|
|
str(root / "a" / "f.mkv"),
|
|
str(root / "b" / "f.mkv"),
|
|
root,
|
|
)
|
|
assert "来源:" in text
|
|
assert "f.mkv" in text
|
|
assert "目标:" in text
|
|
|
|
|
|
def test_build_csv_rows_merges_operation_type():
|
|
rows = [
|
|
{
|
|
"index": "1",
|
|
"operation_type": "move",
|
|
"risk_flags": "manual_review",
|
|
"source_path": "/x",
|
|
"destination_path": "/y",
|
|
"reason": "r",
|
|
}
|
|
]
|
|
merged = build_csv_rows(rows, {1: "no-op"})
|
|
assert merged[0]["operation_type"] == "no-op"
|
|
assert merged[0]["risk_flags"] == "manual_review"
|
|
|
|
|
|
def test_review_row_status_symbol():
|
|
initial = {1: "move"}
|
|
current = {1: "move"}
|
|
assert review_row_status_symbol(current, initial, 1) == "·"
|
|
current2 = {1: "no-op"}
|
|
assert review_row_status_symbol(current2, initial, 1) == "✗"
|
|
current3 = {1: "move"}
|
|
initial3 = {1: "no-op"}
|
|
assert review_row_status_symbol(current3, initial3, 1) == "✓" |