Skip to content

Commit 426cdbc

Browse files
committed
Add unit tests for NodeTemplate validation and dependency resolution
- Introduced tests to validate error handling for empty node names, identifiers, and non-unique next node identifiers in the NodeTemplate model. - Added tests to ensure correct retrieval of dependent strings from node inputs, including validation for non-string inputs.
1 parent 531d6e7 commit 426cdbc

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import pytest
2+
from app.models.node_template_model import NodeTemplate, Unites
3+
4+
def test_invalid_node_template(app_started):
5+
"""Test invalid node template"""
6+
with pytest.raises(ValueError) as exc_info:
7+
NodeTemplate(
8+
node_name="",
9+
namespace="test_namespace",
10+
identifier="node1",
11+
inputs={},
12+
next_nodes=None,
13+
unites=None
14+
)
15+
assert "Node name cannot be empty" in str(exc_info.value)
16+
17+
with pytest.raises(ValueError) as exc_info:
18+
NodeTemplate(
19+
node_name="test_node",
20+
namespace="test_namespace",
21+
identifier="",
22+
inputs={},
23+
next_nodes=None,
24+
unites=None
25+
)
26+
assert "Node identifier cannot be empty" in str(exc_info.value)
27+
28+
with pytest.raises(ValueError) as exc_info:
29+
NodeTemplate(
30+
node_name="test_node",
31+
namespace="test_namespace",
32+
identifier="node1",
33+
inputs={},
34+
next_nodes=["", "node2"],
35+
unites=None
36+
)
37+
assert "Next node identifier cannot be empty" in str(exc_info.value)
38+
39+
with pytest.raises(ValueError) as exc_info:
40+
NodeTemplate(
41+
node_name="test_node",
42+
namespace="test_namespace",
43+
identifier="node1",
44+
inputs={},
45+
next_nodes=["node1", "node1"],
46+
unites=None
47+
)
48+
assert "Next node identifier node1 is not unique" in str(exc_info.value)
49+
50+
with pytest.raises(ValueError) as exc_info:
51+
NodeTemplate(
52+
node_name="test_node",
53+
namespace="test_namespace",
54+
identifier="node1",
55+
inputs={},
56+
next_nodes=["node2"],
57+
unites=Unites(identifier="")
58+
)
59+
assert "Unites identifier cannot be empty" in str(exc_info.value)
60+
61+
def test_get_dependent_strings(app_started):
62+
"""Test get dependent strings"""
63+
node_template = NodeTemplate(
64+
node_name="test_node",
65+
namespace="test_namespace",
66+
identifier="node1",
67+
inputs={"input1": "${{node2.outputs.output1}}"},
68+
next_nodes=None,
69+
unites=None
70+
)
71+
dependent_strings = node_template.get_dependent_strings()
72+
assert len(dependent_strings) == 1
73+
assert dependent_strings[0].get_identifier_field() == [("node2", "output1")]
74+
75+
node_template = NodeTemplate(
76+
node_name="test_node",
77+
namespace="test_namespace",
78+
identifier="node1",
79+
inputs={"input1": "${{node2.outputs.output1}}", "input2": "${{node3.outputs.output2}}"},
80+
next_nodes=None,
81+
unites=None
82+
)
83+
dependent_strings = node_template.get_dependent_strings()
84+
assert len(dependent_strings) == 2
85+
assert ("node2", "output1") in dependent_strings[0].get_identifier_field()
86+
assert ("node3", "output2") in dependent_strings[1].get_identifier_field()
87+
88+
with pytest.raises(ValueError) as exc_info:
89+
node_template = NodeTemplate(
90+
node_name="test_node",
91+
namespace="test_namespace",
92+
identifier="node1",
93+
inputs={"input1": 1},
94+
next_nodes=None,
95+
unites=None
96+
)
97+
dependent_strings = node_template.get_dependent_strings()
98+
assert "Input 1 is not a string" in str(exc_info.value)

0 commit comments

Comments
 (0)