from pathlib import Path from job_topology import ScheduledJob, bind_jobs, snapshot_scheduled_jobs from sir import EdgeKind from semantic_kernel import index_project def test_bind_jobs_to_routines(tmp_path: Path): module = tmp_path / "jobs.bsl" module.write_text("Процедура ОбновитьЦены()\nКонецПроцедуры\n", encoding="utf-8") snapshot = index_project(tmp_path, project_id="demo") bindings = bind_jobs( snapshot, [ScheduledJob(job_id="job.1", name="Обновление цен", routine_name="ОбновитьЦены")], ) assert bindings[0].routine is not None assert bindings[0].routine.name == "ОбновитьЦены" def test_snapshot_scheduled_jobs_bind_xml_job_to_routine(tmp_path: Path): xml = tmp_path / "metadata.xml" xml.write_text( """ """, encoding="utf-8", ) module = tmp_path / "CommonModules" / "РегламентныеОперации" / "Module.bsl" module.parent.mkdir(parents=True) module.write_text("Процедура ОбновитьЦены()\nКонецПроцедуры\n", encoding="utf-8") snapshot = index_project(tmp_path, project_id="jobs") bindings = snapshot_scheduled_jobs(snapshot) assert any(edge.kind == EdgeKind.RUNS for edge in snapshot.edges) assert bindings[0].job.name == "ОбновлениеЦен" assert bindings[0].job.schedule == "КаждыйДень" assert bindings[0].routine is not None assert bindings[0].routine.name == "ОбновитьЦены"