49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
import scripts.plan_1c_saved_state_copy as copy_plan
|
|
import scripts.smoke_1c_code_write_saved_state as code_write_smoke
|
|
|
|
|
|
def test_resolve_object_uses_name_first_object_get(monkeypatch) -> None:
|
|
calls: list[tuple[str, dict[str, Any]]] = []
|
|
|
|
def fake_rpc(base_url: str, method: str, payload: dict[str, Any], timeout: float) -> dict[str, Any]:
|
|
calls.append((method, payload))
|
|
assert method == "metadata.object.get"
|
|
return {
|
|
"status": "ok",
|
|
"object": {
|
|
"guid": "40045984-a54c-42bd-8ea8-1c10672f40ec",
|
|
"kind": "Catalog",
|
|
"name": "АвансовыйОтчетПрисоединенныеФайлы",
|
|
},
|
|
}
|
|
|
|
monkeypatch.setattr(copy_plan, "rpc", fake_rpc)
|
|
selector = {
|
|
"base_id": "upo_test",
|
|
"ref": "Catalog.АвансовыйОтчетПрисоединенныеФайлы",
|
|
"include_storage": True,
|
|
"table": "Config",
|
|
}
|
|
|
|
result = copy_plan.resolve_object("http://adapter.example", selector, "Config", 1)
|
|
|
|
assert result["kind"] == "Catalog"
|
|
assert result["name"] == "АвансовыйОтчетПрисоединенныеФайлы"
|
|
assert calls == [("metadata.object.get", selector)]
|
|
|
|
|
|
def test_optional_code_write_smoke_skips_only_policy_gate() -> None:
|
|
assert code_write_smoke.is_optional_write_gate_block(
|
|
{"status": "blocked", "error": "needs_repository_lock"}
|
|
)
|
|
assert not code_write_smoke.is_optional_write_gate_block(
|
|
{"status": "blocked", "error": "write_plan_blocked"}
|
|
)
|
|
assert not code_write_smoke.is_optional_write_gate_block(
|
|
{"status": "error", "error": "needs_repository_lock"}
|
|
)
|