Model 1C modules as object parts
This commit is contained in:
@@ -552,6 +552,16 @@ def test_html5_object_context_fragment(tmp_path: Path):
|
||||
|
||||
Процедура ПроверитьКонтрагента()
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
form_module = tmp_path / "Documents" / "ЗаказПокупателя" / "Forms" / "ФормаДокумента" / "Ext" / "Form" / "Module.bsl"
|
||||
form_module.parent.mkdir(parents=True)
|
||||
form_module.write_text(
|
||||
"""
|
||||
Процедура ПриОткрытии()
|
||||
Сообщить("Форма готова");
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
@@ -630,6 +640,10 @@ def test_html5_object_context_fragment(tmp_path: Path):
|
||||
assert 'hx-target="[data-html5-flowchart]"' in context.text
|
||||
assert f"/html5/projects/{project_id}/flowchart?focus=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82.%D0%97%D0%B0%D0%BA%D0%B0%D0%B7%D0%9F%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&depth=1" in context.text
|
||||
assert 'hx-target="[data-html5-source]"' in context.text
|
||||
assert 'data-html5-module-action="OBJECT_MODULE"' in context.text
|
||||
assert 'data-html5-module-action="FORM_MODULE"' in context.text
|
||||
assert "Модуль объекта" in context.text
|
||||
assert "Модуль формы ФормаДокумента" in context.text
|
||||
assert 'hx-target="[data-html5-symbol-detail]"' in context.text
|
||||
assert "Контрагент" in context.text
|
||||
assert "Товары" in context.text
|
||||
@@ -647,6 +661,10 @@ def test_html5_object_context_fragment(tmp_path: Path):
|
||||
assert 'hx-swap-oob="outerHTML"' in context.text
|
||||
assert "Карта связей · focus" in context.text
|
||||
assert "data-html5-source" in context.text
|
||||
assert 'data-html5-object-cache="warm"' in context.text
|
||||
assert 'data-html5-owner="Документ.ЗаказПокупателя"' in context.text
|
||||
assert 'data-html5-object-part="object.module"' in context.text
|
||||
assert "data-html5-object-cache-summary" in context.text
|
||||
assert "data-html5-source-summary" in context.text
|
||||
assert "ObjectModule.bsl" in context.text
|
||||
assert "Соединение = Новый HTTPСоединение" in context.text
|
||||
@@ -1626,6 +1644,9 @@ def test_import_edt_full_replace_includes_object_bsl_modules_in_normalized_model
|
||||
"""
|
||||
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass">
|
||||
<name>Контрагенты</name>
|
||||
<forms>
|
||||
<name>ФормаЭлемента</name>
|
||||
</forms>
|
||||
</mdclass:Catalog>
|
||||
""",
|
||||
encoding="utf-8",
|
||||
@@ -1641,6 +1662,15 @@ def test_import_edt_full_replace_includes_object_bsl_modules_in_normalized_model
|
||||
"""
|
||||
Процедура Создать() Экспорт
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
form_module_dir = catalog_dir / "Forms" / "ФормаЭлемента" / "Ext" / "Form"
|
||||
form_module_dir.mkdir(parents=True)
|
||||
(form_module_dir / "Module.bsl").write_text(
|
||||
"""
|
||||
Процедура ПриОткрытии()
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
@@ -1653,15 +1683,20 @@ def test_import_edt_full_replace_includes_object_bsl_modules_in_normalized_model
|
||||
)
|
||||
|
||||
assert imported.status_code == 200
|
||||
assert imported.json()["normalized_summary"]["module_count"] == 2
|
||||
assert imported.json()["normalized_summary"]["module_count"] == 3
|
||||
detail = client.get(
|
||||
f"/projects/{project_id}/normalized/object",
|
||||
params={"qualified_name": "Справочник.Контрагенты"},
|
||||
)
|
||||
assert detail.status_code == 200
|
||||
modules = detail.json()["object"]["modules"]
|
||||
assert [module["module_kind"] for module in modules] == ["MANAGER_MODULE", "OBJECT_MODULE"]
|
||||
assert {module["module_kind"] for module in modules} == {"FORM_MODULE", "MANAGER_MODULE", "OBJECT_MODULE"}
|
||||
assert all(module["attributes"]["source_hash"] for module in modules)
|
||||
form_module = next(module for module in modules if module["module_kind"] == "FORM_MODULE")
|
||||
assert form_module["attributes"]["owner_qualified_name"] == "Справочник.Контрагенты"
|
||||
assert form_module["attributes"]["object_part"] == "form.ФормаЭлемента.module"
|
||||
assert form_module["attributes"]["form_name"] == "ФормаЭлемента"
|
||||
assert form_module["attributes"]["form_qualified_name"] == "Справочник.Контрагенты.ФормаЭлемента"
|
||||
|
||||
|
||||
def test_import_edt_full_replace_keeps_tabular_section_columns_nested(tmp_path: Path):
|
||||
@@ -2176,6 +2211,9 @@ def test_normalized_object_modules_returns_linked_bsl_source(tmp_path: Path):
|
||||
assert modules.status_code == 200
|
||||
payload = modules.json()
|
||||
assert payload[0]["module_role"] == "OBJECT_MODULE"
|
||||
assert payload[0]["owner_qualified_name"] == "Справочник.Контрагенты"
|
||||
assert payload[0]["owner_kind"] == "CATALOG"
|
||||
assert payload[0]["object_part"] == "object.module"
|
||||
assert "ПередЗаписью" in payload[0]["source_text"]
|
||||
assert payload[0]["routines_count"] == 2
|
||||
assert payload[0]["routines"][0]["name"] == "ПередЗаписью"
|
||||
|
||||
Reference in New Issue
Block a user