Add HTML5 metadata authoring form
CI / python (push) Has been cancelled
CI / rust (push) Has been cancelled

This commit is contained in:
2026-05-16 23:55:02 +03:00
parent 460881428b
commit 41dc88c33b
3 changed files with 283 additions and 0 deletions
+50
View File
@@ -117,6 +117,9 @@ def test_html5_server_rendered_project_editor(tmp_path: Path):
assert f'hx-post="/html5/projects/{project_id}/authoring/completion-preview"' in editor.text
assert "data-html5-authoring-diff-form" in editor.text
assert f'hx-post="/html5/projects/{project_id}/authoring/semantic-diff-preview"' in editor.text
assert "data-html5-metadata-authoring" in editor.text
assert "data-html5-metadata-preview-form" in editor.text
assert f'hx-post="/html5/projects/{project_id}/authoring/metadata-object-preview"' in editor.text
assert "data-html5-authoring-changes" in editor.text
assert f'hx-get="/html5/projects/{project_id}/authoring/changes"' in editor.text
assert 'hx-get="/html5/projects/' in editor.text
@@ -2723,6 +2726,53 @@ def test_authoring_metadata_object_preview_and_apply(tmp_path: Path):
assert any("ТабличнаяЧасть.Товары" in row["text"] for row in preview_payload["semantic_diff"])
assert any("Команда.Заполнить" in row["text"] for row in preview_payload["semantic_diff"])
html5_preview = client.post(
f"/html5/projects/{project_id}/authoring/metadata-object-preview",
data={
"object_kind": "DOCUMENT",
"name": "ЗаявкаНаЗакупкуHtml5",
"synonym": "Заявка на закупку HTML5",
"attributes": "Контрагент:СправочникСсылка.Контрагенты",
"tabular_sections": "Товары[Номенклатура:СправочникСсылка.Номенклатура;Количество:Число]",
"forms": "ФормаДокумента",
"commands": "Заполнить:ЗаполнитьКоманда",
"task_id": "task.metadata",
"session_id": "session.metadata",
"user_id": "dev.ivan",
},
)
assert html5_preview.status_code == 200
assert "text/html" in html5_preview.headers["content-type"]
assert "data-html5-metadata-preview-result" in html5_preview.text
assert "data-html5-metadata-apply-form" in html5_preview.text
assert f'hx-post="/html5/projects/{project_id}/authoring/apply-metadata-object"' in html5_preview.text
assert "Документ.ЗаявкаНаЗакупкуHtml5" in html5_preview.text
assert "Реквизит.Контрагент" in html5_preview.text
assert "<html" not in html5_preview.text
html5_blocked_apply = client.post(
f"/html5/projects/{project_id}/authoring/apply-metadata-object",
data={
"object_kind": "DOCUMENT",
"name": "ЗаявкаНаЗакупкуHtml5",
"synonym": "Заявка на закупку HTML5",
"attributes": "Контрагент:СправочникСсылка.Контрагенты",
"tabular_sections": "Товары[Номенклатура:СправочникСсылка.Номенклатура;Количество:Число]",
"forms": "ФормаДокумента",
"commands": "Заполнить:ЗаполнитьКоманда",
"task_id": "task.metadata",
"session_id": "session.metadata",
"user_id": "dev.ivan",
"expected_next_version_id": "wrong-version",
"approved_by": "dev.ivan",
},
)
assert html5_blocked_apply.status_code == 200
assert "text/html" in html5_blocked_apply.headers["content-type"]
assert "data-html5-metadata-apply-result" in html5_blocked_apply.text
assert "Expected version id does not match current metadata preview" in html5_blocked_apply.text
assert "<html" not in html5_blocked_apply.text
apply_response = client.post(
f"/projects/{project_id}/authoring/apply-metadata-object",
json={