Extract HTML5 form helpers
CI / python (push) Has been cancelled
CI / rust (push) Has been cancelled

This commit is contained in:
2026-05-17 12:32:09 +03:00
parent 990eeedaba
commit 8683b136b3
3 changed files with 133 additions and 74 deletions
+48
View File
@@ -7,6 +7,12 @@ import zipfile
from fastapi.testclient import TestClient
from api_server import main
from api_server.html5_forms import (
form_value,
html5_csv_values,
html5_metadata_payload,
html5_metadata_request_payload,
)
from api_server.html5_sse import html5_sse_comment, html5_sse_event, html5_sse_if_changed
from api_server.main import app
from one_c_normalizer import ConfigurationRoot, MetadataGroup, MetadataObject, Module, NormalizedProject
@@ -72,6 +78,48 @@ def test_html5_sse_formatters_emit_stable_event_stream_chunks():
assert "data: <div>done</div>" in third[0]
def test_html5_form_helpers_normalize_metadata_payloads():
form = {
"name": [" ЗаказПокупателя "],
"synonym": [" Заказ покупателя "],
"attributes": ["Номер:Строка, Дата:Дата\nКомментарий"],
"tabular_sections": ["Товары[Номенклатура:СправочникСсылка.Номенклатура;Количество:Число]"],
"forms": ["ФормаДокумента, ФормаСписка\nФормаВыбора"],
"commands": ["Провести:ПровестиДокумент, Печать"],
"task_id": [" task-1 "],
"empty": [" "],
}
payload = html5_metadata_payload(form)
assert form_value(form, "name") == "ЗаказПокупателя"
assert form_value(form, "empty") is None
assert html5_csv_values("one, two\nthree") == ["one", "two", "three"]
assert payload["object_kind"] == "DOCUMENT"
assert payload["name"] == "ЗаказПокупателя"
assert payload["attributes"] == [
{"name": "Номер", "type": "Строка"},
{"name": "Дата", "type": "Дата"},
{"name": "Комментарий", "type": "Строка"},
]
assert payload["tabular_sections"] == [
{
"name": "Товары",
"attributes": [
{"name": "Номенклатура", "type": "СправочникСсылка.Номенклатура"},
{"name": "Количество", "type": "Число"},
],
}
]
assert payload["forms"] == ["ФормаДокумента", "ФормаСписка", "ФормаВыбора"]
assert payload["commands"] == [
{"name": "Провести", "handler": "ПровестиДокумент"},
{"name": "Печать", "handler": None},
]
assert payload["_raw_attributes"] == "Номер:Строка, Дата:Дата\nКомментарий"
assert "_raw_attributes" not in html5_metadata_request_payload(payload)
def test_cors_allows_lan_panel_origin():
client = TestClient(app)
response = client.options(