Initial SFERA platform baseline
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from pathlib import Path
|
||||
|
||||
from pattern_mining import mine_patterns
|
||||
from semantic_kernel import index_project
|
||||
|
||||
|
||||
def test_mine_patterns_finds_repeated_table_writes(tmp_path: Path):
|
||||
(tmp_path / "module.bsl").write_text(
|
||||
"""
|
||||
Процедура ПровестиЗаказ()
|
||||
Движения.ОстаткиТоваров.Записать();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОтменитьЗаказ()
|
||||
Движения.ОстаткиТоваров.Записать();
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
snapshot = index_project(tmp_path, project_id="patterns")
|
||||
|
||||
patterns = mine_patterns(snapshot)
|
||||
|
||||
repeated_writes = [pattern for pattern in patterns if pattern.kind == "REPEATED_TABLE_WRITE"]
|
||||
assert repeated_writes
|
||||
assert repeated_writes[0].support == 2
|
||||
assert repeated_writes[0].targets[0].name == "ОстаткиТоваров"
|
||||
|
||||
|
||||
def test_mine_patterns_finds_repeated_query_reads(tmp_path: Path):
|
||||
(tmp_path / "module.bsl").write_text(
|
||||
"""
|
||||
Процедура ПроверитьОстатки()
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
Остатки.Номенклатура
|
||||
ИЗ
|
||||
РегистрНакопления.ОстаткиТоваров КАК Остатки";
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РассчитатьОстатки()
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
Остатки.Номенклатура
|
||||
ИЗ
|
||||
РегистрНакопления.ОстаткиТоваров КАК Остатки";
|
||||
КонецПроцедуры
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
snapshot = index_project(tmp_path, project_id="patterns")
|
||||
|
||||
patterns = mine_patterns(snapshot)
|
||||
|
||||
repeated_reads = [pattern for pattern in patterns if pattern.kind == "REPEATED_TABLE_READ"]
|
||||
assert repeated_reads
|
||||
assert repeated_reads[0].support == 2
|
||||
Reference in New Issue
Block a user