63 lines
2.1 KiB
Python
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"
|