Files
sfera/packages/sir/tests/test_snapshot_validation.py
T
2026-05-16 19:03:49 +03:00

52 lines
1.6 KiB
Python

import pytest
from sir import EdgeKind, NodeKind, SemanticEdge, SemanticNode, SirSnapshot, SourceRef
from sir import SnapshotValidationError, validate_snapshot
def make_nodes():
module = SemanticNode(
semantic_id="module.demo",
lineage_id="lineage.module.demo",
kind=NodeKind.MODULE,
name="Module",
qualified_name="Module",
source_ref=SourceRef(source_path="module.bsl"),
)
procedure = SemanticNode(
semantic_id="procedure.posting",
lineage_id="lineage.procedure.posting",
kind=NodeKind.PROCEDURE,
name="Проведение",
qualified_name="Module.Проведение",
source_ref=SourceRef(source_path="module.bsl"),
)
return module, procedure
def test_snapshot_validation_ok():
module, procedure = make_nodes()
edge = SemanticEdge(
edge_id="edge.declares.1",
kind=EdgeKind.DECLARES,
source_lineage=module.lineage_id,
target_lineage=procedure.lineage_id,
)
snapshot = SirSnapshot(
snapshot_id="snapshot.demo", project_id="demo", nodes=[module, procedure], edges=[edge]
)
validate_snapshot(snapshot)
def test_snapshot_validation_dangling_edge():
module, _procedure = make_nodes()
edge = SemanticEdge(
edge_id="edge.bad.1",
kind=EdgeKind.CALLS,
source_lineage=module.lineage_id,
target_lineage="lineage.missing",
)
snapshot = SirSnapshot(snapshot_id="snapshot.demo", project_id="demo", nodes=[module], edges=[edge])
with pytest.raises(SnapshotValidationError):
validate_snapshot(snapshot)