Skip to content

Commit b61baa7

Browse files
author
Alan Christie
committed
fix: Validator now ensures jobs exist (run-level test)
1 parent cf6cfbe commit b61baa7

5 files changed

+123
-27
lines changed

tests/test_workflow_engine_examples.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ def start_workflow(
8181
# 2.
8282
vr_result: ValidationResult = WorkflowValidator.validate(
8383
workflow_definition=wf_definition,
84+
wapi_adapter=da,
8485
variables=variables,
8586
level=ValidationLevel.RUN,
8687
)

tests/test_workflow_validator_for_create_level.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,35 @@
77
pytestmark = pytest.mark.unit
88

99
from tests.test_decoder import _MINIMAL_WORKFLOW
10+
from tests.wapi_adapter import UnitTestWorkflowAPIAdapter
1011
from workflow.workflow_validator import ValidationLevel, WorkflowValidator
1112

1213

13-
def test_validate_minimal():
14+
@pytest.fixture
15+
def wapi():
16+
wapi_adapter = UnitTestWorkflowAPIAdapter()
17+
yield wapi_adapter
18+
19+
20+
def test_validate_minimal(wapi):
1421
# Arrange
22+
wapi_adapter = wapi
1523

1624
# Act
1725
error = WorkflowValidator.validate(
1826
level=ValidationLevel.CREATE,
1927
workflow_definition=_MINIMAL_WORKFLOW,
28+
wapi_adapter=wapi_adapter,
2029
)
2130

2231
# Assert
2332
assert error.error_num == 0
2433
assert error.error_msg is None
2534

2635

27-
def test_validate_example_nop_file():
36+
def test_validate_example_nop_file(wapi):
2837
# Arrange
38+
wapi_adapter = wapi
2939
workflow_filename: str = os.path.join(
3040
os.path.dirname(__file__), "workflow-definitions", "example-nop-fail.yaml"
3141
)
@@ -37,15 +47,17 @@ def test_validate_example_nop_file():
3747
error = WorkflowValidator.validate(
3848
level=ValidationLevel.CREATE,
3949
workflow_definition=workflow,
50+
wapi_adapter=wapi_adapter,
4051
)
4152

4253
# Assert
4354
assert error.error_num == 0
4455
assert error.error_msg is None
4556

4657

47-
def test_validate_example_smiles_to_file():
58+
def test_validate_example_smiles_to_file(wapi):
4859
# Arrange
60+
wapi_adapter = wapi
4961
workflow_filename: str = os.path.join(
5062
os.path.dirname(__file__), "workflow-definitions", "example-smiles-to-file.yaml"
5163
)
@@ -57,15 +69,17 @@ def test_validate_example_smiles_to_file():
5769
error = WorkflowValidator.validate(
5870
level=ValidationLevel.CREATE,
5971
workflow_definition=workflow,
72+
wapi_adapter=wapi_adapter,
6073
)
6174

6275
# Assert
6376
assert error.error_num == 0
6477
assert error.error_msg is None
6578

6679

67-
def test_validate_example_two_step_nop():
80+
def test_validate_example_two_step_nop(wapi):
6881
# Arrange
82+
wapi_adapter = wapi
6983
workflow_filename: str = os.path.join(
7084
os.path.dirname(__file__), "workflow-definitions", "example-two-step-nop.yaml"
7185
)
@@ -77,15 +91,17 @@ def test_validate_example_two_step_nop():
7791
error = WorkflowValidator.validate(
7892
level=ValidationLevel.CREATE,
7993
workflow_definition=workflow,
94+
wapi_adapter=wapi_adapter,
8095
)
8196

8297
# Assert
8398
assert error.error_num == 0
8499
assert error.error_msg is None
85100

86101

87-
def test_validate_shortcut_example_1():
102+
def test_validate_shortcut_example_1(wapi):
88103
# Arrange
104+
wapi_adapter = wapi
89105
workflow_filename: str = os.path.join(
90106
os.path.dirname(__file__), "workflow-definitions", "shortcut-example-1.yaml"
91107
)
@@ -97,15 +113,17 @@ def test_validate_shortcut_example_1():
97113
error = WorkflowValidator.validate(
98114
level=ValidationLevel.CREATE,
99115
workflow_definition=workflow,
116+
wapi_adapter=wapi_adapter,
100117
)
101118

102119
# Assert
103120
assert error.error_num == 0
104121
assert error.error_msg is None
105122

106123

107-
def test_validate_simple_python_molprops():
124+
def test_validate_simple_python_molprops(wapi):
108125
# Arrange
126+
wapi_adapter = wapi
109127
workflow_filename: str = os.path.join(
110128
os.path.dirname(__file__), "workflow-definitions", "simple-python-molprops.yaml"
111129
)
@@ -117,15 +135,17 @@ def test_validate_simple_python_molprops():
117135
error = WorkflowValidator.validate(
118136
level=ValidationLevel.CREATE,
119137
workflow_definition=workflow,
138+
wapi_adapter=wapi_adapter,
120139
)
121140

122141
# Assert
123142
assert error.error_num == 0
124143
assert error.error_msg is None
125144

126145

127-
def test_validate_simple_python_molprops_with_options():
146+
def test_validate_simple_python_molprops_with_options(wapi):
128147
# Arrange
148+
wapi_adapter = wapi
129149
workflow_filename: str = os.path.join(
130150
os.path.dirname(__file__),
131151
"workflow-definitions",
@@ -139,6 +159,7 @@ def test_validate_simple_python_molprops_with_options():
139159
error = WorkflowValidator.validate(
140160
level=ValidationLevel.CREATE,
141161
workflow_definition=workflow,
162+
wapi_adapter=wapi_adapter,
142163
)
143164

144165
# Assert

tests/test_workflow_validator_for_run_level.py

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,19 @@
66

77
pytestmark = pytest.mark.unit
88

9+
from tests.wapi_adapter import UnitTestWorkflowAPIAdapter
910
from workflow.workflow_validator import ValidationLevel, WorkflowValidator
1011

1112

12-
def test_validate_example_nop_file():
13+
@pytest.fixture
14+
def wapi():
15+
wapi_adapter = UnitTestWorkflowAPIAdapter()
16+
yield wapi_adapter
17+
18+
19+
def test_validate_example_nop_file(wapi):
1320
# Arrange
21+
wapi_adapter = wapi
1422
workflow_filename: str = os.path.join(
1523
os.path.dirname(__file__), "workflow-definitions", "example-nop-fail.yaml"
1624
)
@@ -22,15 +30,17 @@ def test_validate_example_nop_file():
2230
error = WorkflowValidator.validate(
2331
level=ValidationLevel.RUN,
2432
workflow_definition=workflow,
33+
wapi_adapter=wapi_adapter,
2534
)
2635

2736
# Assert
2837
assert error.error_num == 0
2938
assert error.error_msg is None
3039

3140

32-
def test_validate_duplicate_step_names():
41+
def test_validate_duplicate_step_names(wapi):
3342
# Arrange
43+
wapi_adapter = wapi
3444
workflow_filename: str = os.path.join(
3545
os.path.dirname(__file__), "workflow-definitions", "duplicate-step-names.yaml"
3646
)
@@ -42,15 +52,17 @@ def test_validate_duplicate_step_names():
4252
error = WorkflowValidator.validate(
4353
level=ValidationLevel.RUN,
4454
workflow_definition=workflow,
55+
wapi_adapter=wapi_adapter,
4556
)
4657

4758
# Assert
4859
assert error.error_num == 2
4960
assert error.error_msg == ["Duplicate step names found: step-1"]
5061

5162

52-
def test_validate_example_smiles_to_file():
63+
def test_validate_example_smiles_to_file(wapi):
5364
# Arrange
65+
wapi_adapter = wapi
5466
workflow_filename: str = os.path.join(
5567
os.path.dirname(__file__), "workflow-definitions", "example-smiles-to-file.yaml"
5668
)
@@ -63,15 +75,17 @@ def test_validate_example_smiles_to_file():
6375
level=ValidationLevel.RUN,
6476
workflow_definition=workflow,
6577
variables={"smiles": "C", "outputFile": "blob.smi"},
78+
wapi_adapter=wapi_adapter,
6679
)
6780

6881
# Assert
6982
assert error.error_num == 0
7083
assert error.error_msg is None
7184

7285

73-
def test_validate_example_two_step_nop():
86+
def test_validate_example_two_step_nop(wapi):
7487
# Arrange
88+
wapi_adapter = wapi
7589
workflow_filename: str = os.path.join(
7690
os.path.dirname(__file__), "workflow-definitions", "example-two-step-nop.yaml"
7791
)
@@ -83,15 +97,17 @@ def test_validate_example_two_step_nop():
8397
error = WorkflowValidator.validate(
8498
level=ValidationLevel.RUN,
8599
workflow_definition=workflow,
100+
wapi_adapter=wapi_adapter,
86101
)
87102

88103
# Assert
89104
assert error.error_num == 0
90105
assert error.error_msg is None
91106

92107

93-
def test_validate_shortcut_example_1():
108+
def test_validate_shortcut_example_1(wapi):
94109
# Arrange
110+
wapi_adapter = wapi
95111
workflow_filename: str = os.path.join(
96112
os.path.dirname(__file__), "workflow-definitions", "shortcut-example-1.yaml"
97113
)
@@ -103,15 +119,17 @@ def test_validate_shortcut_example_1():
103119
error = WorkflowValidator.validate(
104120
level=ValidationLevel.RUN,
105121
workflow_definition=workflow,
122+
wapi_adapter=wapi_adapter,
106123
)
107124

108125
# Assert
109126
assert error.error_num == 0
110127
assert error.error_msg is None
111128

112129

113-
def test_validate_simple_python_molprops():
130+
def test_validate_simple_python_molprops(wapi):
114131
# Arrange
132+
wapi_adapter = wapi
115133
workflow_filename: str = os.path.join(
116134
os.path.dirname(__file__), "workflow-definitions", "simple-python-molprops.yaml"
117135
)
@@ -125,15 +143,17 @@ def test_validate_simple_python_molprops():
125143
level=ValidationLevel.RUN,
126144
workflow_definition=workflow,
127145
variables=variables,
146+
wapi_adapter=wapi_adapter,
128147
)
129148

130149
# Assert
131150
assert error.error_num == 0
132151
assert error.error_msg is None
133152

134153

135-
def test_validate_simple_python_molprops_with_options_when_missing_required():
154+
def test_validate_simple_python_molprops_with_options_when_missing_required(wapi):
136155
# Arrange
156+
wapi_adapter = wapi
137157
workflow_filename: str = os.path.join(
138158
os.path.dirname(__file__),
139159
"workflow-definitions",
@@ -154,6 +174,7 @@ def test_validate_simple_python_molprops_with_options_when_missing_required():
154174
level=ValidationLevel.RUN,
155175
workflow_definition=workflow,
156176
variables=variables,
177+
wapi_adapter=wapi_adapter,
157178
)
158179

159180
# Assert
@@ -163,8 +184,9 @@ def test_validate_simple_python_molprops_with_options_when_missing_required():
163184
]
164185

165186

166-
def test_validate_simple_python_molprops_with_options():
187+
def test_validate_simple_python_molprops_with_options(wapi):
167188
# Arrange
189+
wapi_adapter = wapi
168190
workflow_filename: str = os.path.join(
169191
os.path.dirname(__file__),
170192
"workflow-definitions",
@@ -186,15 +208,17 @@ def test_validate_simple_python_molprops_with_options():
186208
level=ValidationLevel.RUN,
187209
workflow_definition=workflow,
188210
variables=variables,
211+
wapi_adapter=wapi_adapter,
189212
)
190213

191214
# Assert
192215
assert error.error_num == 0
193216
assert error.error_msg is None
194217

195218

196-
def test_validate_simple_python_molprops_with_missing_input():
219+
def test_validate_simple_python_molprops_with_missing_input(wapi):
197220
# Arrange
221+
wapi_adapter = wapi
198222
workflow_filename: str = os.path.join(
199223
os.path.dirname(__file__), "workflow-definitions", "simple-python-molprops.yaml"
200224
)
@@ -208,6 +232,7 @@ def test_validate_simple_python_molprops_with_missing_input():
208232
level=ValidationLevel.RUN,
209233
workflow_definition=workflow,
210234
variables=variables,
235+
wapi_adapter=wapi_adapter,
211236
)
212237

213238
# Assert

0 commit comments

Comments
 (0)