70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
sys.path.insert(0, str(ROOT / "scripts"))
|
|
|
|
import generate_1c_training_data as gen # noqa: E402
|
|
|
|
|
|
def test_verified_write_records_capture_safe_route() -> None:
|
|
registry = {
|
|
"base_id": "upo_test",
|
|
"table": "ConfigSave",
|
|
"file_name": "form.0",
|
|
"patterns": [
|
|
{
|
|
"effective_section": "items",
|
|
"canonical_property": "title",
|
|
"presentation": "Заголовок",
|
|
"value_type": "string",
|
|
"write_path": "1.2.3",
|
|
"source_kind": "local",
|
|
"verification": "source_aware_readback",
|
|
}
|
|
],
|
|
}
|
|
|
|
records = gen.verified_write_records(registry, "registry-smoke", max_records=5)
|
|
|
|
assert len(records) == 1
|
|
record = records[0]
|
|
assert record["id"] == "registry-smoke-verified-write-001"
|
|
assert record["metadata"]["task"] == "metadata-write-verified"
|
|
assistant = record["messages"][-1]["content"]
|
|
assert "base_id: upo_test" in assistant
|
|
assert "apply_and_rollback" in assistant
|
|
assert "Не расширяй allowlist" in assistant
|
|
|
|
|
|
def test_write_learning_plan_records_keep_cases_manual() -> None:
|
|
plan = {
|
|
"workflow": ["capture_before", "capture_after", "diff", "smoke_rule"],
|
|
"cases": [
|
|
{
|
|
"id": "learn-001",
|
|
"action": "run_before_after_learning_for_parameter",
|
|
"property": "параметр 14",
|
|
"value_type": "integer_atom",
|
|
"write_path": "1.22.14",
|
|
"current_value": "2",
|
|
"manual_step": {
|
|
"target": "ФормаКоманднаяПанель",
|
|
"instruction": "Измени свойство в тестовой базе",
|
|
},
|
|
}
|
|
],
|
|
}
|
|
|
|
records = gen.write_learning_plan_records(plan, "plan-smoke", max_records=1)
|
|
|
|
assert len(records) == 1
|
|
record = records[0]
|
|
assert record["metadata"]["task"] == "metadata-write-learning-plan"
|
|
assistant = record["messages"][-1]["content"]
|
|
assert "Это не готовый allowlist" in assistant
|
|
assert "capture_before" in assistant
|
|
assert "smoke-проверки" in assistant
|