Files
llm/tests/1c/test_extension_common_form_route.py
2026-08-14 09:40:51 +03:00

63 lines
2.1 KiB
Python

"""Extension CommonForm decoding must use the manifest payload route, not its GUID as a file name."""
from __future__ import annotations
import sys
from pathlib import Path
CONNECTOR = Path(__file__).resolve().parents[2] / "plugins" / "1c" / "connector"
if str(CONNECTOR) not in sys.path:
sys.path.insert(0, str(CONNECTOR))
import adapter_1c_server as adapter # noqa: E402
def test_common_form_uses_extension_manifest_route(monkeypatch) -> None:
form_guid = "e7517ee6-7e33-40ba-9442-48c78e0818e1"
captured: dict[str, str] = {}
monkeypatch.setattr(
adapter,
"extension_objects_find",
lambda _payload: {
"status": "ok",
"objects": [{
"kind": "CommonForm",
"name": "ФормаОтчетаПродкорзина",
"guid": form_guid,
"route": {"table": "ConfigCAS", "file_name": "manifest-hash-key"},
}],
},
)
def fake_read(_base_id, table, file_name, **_kwargs):
captured["table"] = table
captured["file_name"] = file_name
return None, None, {"status": "source_missing", "diagnostics": {"message": "fixture stop"}}
monkeypatch.setattr(adapter, "read_storage_file_bytes", fake_read)
result = adapter.metadata_form_decode(
{
"base_id": "upo_test",
"kind": "CommonForm",
"extension": "фс_Отчеты1",
"name": "ФормаОтчетаПродкорзина",
"guid": form_guid,
"source_state": "active",
}
)
assert result["status"] == "source_missing"
assert captured == {"table": "ConfigCAS", "file_name": "manifest-hash-key"}
def test_static_form_structure_marks_unproven_tree_edges() -> None:
structure = adapter.form_static_structure(
{"items": [{"id": "1", "name": "Настройки", "type_name": "Группа", "path": "1.7", "depth": 2}]}
)
assert structure["status"] == "partial"
assert structure["elements"][0]["parent"]["status"] == "unresolved"
assert structure["elements"][0]["children"]["status"] == "unresolved"