feat: enhance condition branch validation by adding port edge checks and updating related functions

This commit is contained in:
mlogclub
2026-06-29 12:00:33 +08:00
parent b9f4a3e4b1
commit ca625396a0
5 changed files with 61 additions and 13 deletions
@@ -176,6 +176,24 @@ func TestValidateDefinitionRejectsConditionBranchTargetWithoutEdge(t *testing.T)
}
}
func TestValidateDefinitionRejectsConditionBranchTargetWithoutPortEdge(t *testing.T) {
def := conditionDefinition()
def.Edges = []dsl.Edge{
edge("start_1", "condition_1"),
edge("condition_1", "end_1"),
portEdge("condition_1", "end_1", "default"),
}
result := validator.ValidateDefinition(def, registry.DefaultRegistry())
if result.Valid {
t.Fatalf("expected condition branch target without matching port edge to be invalid")
}
if !hasValidationMessage(result, "condition branch target must have an outgoing edge") {
t.Fatalf("expected branch port edge error, got %#v", result.Errors)
}
}
func TestValidateDefinitionRejectsUnknownConditionVariable(t *testing.T) {
def := conditionDefinition()
var config dsl.ConditionConfig
@@ -240,8 +258,8 @@ func conditionDefinition() dsl.Definition {
},
Edges: []dsl.Edge{
edge("start_1", "condition_1"),
edge("condition_1", "end_1"),
edge("condition_1", "end_1"),
portEdge("condition_1", "end_1", "hello"),
portEdge("condition_1", "end_1", "default"),
},
}
}
@@ -263,6 +281,10 @@ func edge(source string, target string) dsl.Edge {
return dsl.Edge{SourceNodeID: source, TargetNodeID: target}
}
func portEdge(source string, target string, sourcePortID string) dsl.Edge {
return dsl.Edge{SourceNodeID: source, TargetNodeID: target, SourcePortID: sourcePortID}
}
func inputs(name string, value dsl.Value) map[string]dsl.Value {
return map[string]dsl.Value{name: value}
}