Initial SFERA platform baseline
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user