Files
sfera/packages/transaction-topology/tests/test_transaction_topology.py
T
2026-05-16 19:03:49 +03:00

47 lines
1.8 KiB
Python

from pathlib import Path
from semantic_kernel import index_project
from transaction_topology import routines_touching_target, transaction_targets, transaction_write_sets
def test_transaction_write_sets_find_register_writes(tmp_path: Path):
module = tmp_path / "demo_module.bsl"
module.write_text(
"""
Процедура Проведение()
Движения.ОстаткиТоваров.Записать();
КонецПроцедуры
""",
encoding="utf-8",
)
snapshot = index_project(tmp_path, project_id="demo")
write_sets = transaction_write_sets(snapshot)
assert write_sets[0].routine.name == "Проведение"
assert write_sets[0].writes[0].name == "ОстаткиТоваров"
assert routines_touching_target(snapshot, "ОстаткиТоваров")[0].name == "Проведение"
def test_transaction_targets_group_multiple_writers_by_register(tmp_path: Path):
module = tmp_path / "demo_module.bsl"
module.write_text(
"""
Процедура Проведение()
Движения.ОстаткиТоваров.Записать();
КонецПроцедуры
Процедура Корректировка()
Набор = РегистрыНакопления.ОстаткиТоваров.СоздатьНаборЗаписей();
Набор.Записать();
КонецПроцедуры
""",
encoding="utf-8",
)
snapshot = index_project(tmp_path, project_id="transaction-targets")
targets = transaction_targets(snapshot)
assert [target.target.qualified_name for target in targets] == ["РегистрНакопления.ОстаткиТоваров"]
assert {routine.name for routine in targets[0].routines} == {"Проведение", "Корректировка"}