3737import io .serverlessworkflow .api .workflow .Retries ;
3838import io .serverlessworkflow .validation .WorkflowValidatorImpl ;
3939import java .util .Arrays ;
40- import java .util .Collection ;
40+ import java .util .List ;
4141import org .junit .jupiter .api .Assertions ;
4242import org .junit .jupiter .api .Test ;
4343
@@ -46,7 +46,7 @@ public class WorkflowValidationTest {
4646 @ Test
4747 public void testIncompleteJsonWithSchemaValidation () {
4848 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
49- Collection <ValidationError > validationErrors =
49+ List <ValidationError > validationErrors =
5050 workflowValidator .setSource ("{\n " + " \" id\" : \" abc\" \n " + "}" ).validate ();
5151 Assertions .assertNotNull (validationErrors );
5252 Assertions .assertEquals (3 , validationErrors .size ());
@@ -55,7 +55,7 @@ public void testIncompleteJsonWithSchemaValidation() {
5555 @ Test
5656 public void testIncompleteYamlWithSchemaValidation () {
5757 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
58- Collection <ValidationError > validationErrors =
58+ List <ValidationError > validationErrors =
5959 workflowValidator .setSource ("---\n " + "key: abc\n " ).validate ();
6060 Assertions .assertNotNull (validationErrors );
6161 Assertions .assertEquals (3 , validationErrors .size ());
@@ -77,22 +77,18 @@ public void testFromIncompleteWorkflow() {
7777 .withDuration ("PT1M" )));
7878
7979 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
80- Collection <ValidationError > validationErrors =
81- workflowValidator .setWorkflow (workflow ).validate ();
80+ List <ValidationError > validationErrors = workflowValidator .setWorkflow (workflow ).validate ();
8281 Assertions .assertNotNull (validationErrors );
8382 Assertions .assertEquals (1 , validationErrors .size ());
84- Assertions .assertTrue (
85- validationErrors .stream ()
86- .anyMatch (
87- v ->
88- v .getMessage ()
89- .equals ("No state name found that matches the workflow start definition" )));
83+ Assertions .assertEquals (
84+ "No state name found that matches the workflow start definition" ,
85+ validationErrors .get (0 ).getMessage ());
9086 }
9187
9288 @ Test
9389 public void testWorkflowMissingStates () {
9490 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
95- Collection <ValidationError > validationErrors =
91+ List <ValidationError > validationErrors =
9692 workflowValidator
9793 .setSource (
9894 "{\n "
@@ -106,14 +102,13 @@ public void testWorkflowMissingStates() {
106102 Assertions .assertNotNull (validationErrors );
107103 Assertions .assertEquals (1 , validationErrors .size ());
108104
109- Assertions .assertTrue (
110- validationErrors .stream ().anyMatch (v -> v .getMessage ().equals ("No states found" )));
105+ Assertions .assertEquals ("No states found" , validationErrors .get (0 ).getMessage ());
111106 }
112107
113108 @ Test
114109 public void testWorkflowMissingStatesIdAndKey () {
115110 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
116- Collection <ValidationError > validationErrors =
111+ List <ValidationError > validationErrors =
117112 workflowValidator
118113 .setSource (
119114 "{\n "
@@ -125,64 +120,16 @@ public void testWorkflowMissingStatesIdAndKey() {
125120 .validate ();
126121 Assertions .assertNotNull (validationErrors );
127122 Assertions .assertEquals (2 , validationErrors .size ());
128- Assertions .assertEquals (
129- validationErrors .stream ()
130- .filter (
131- v ->
132- v .getMessage ().equals ("No states found" )
133- || v .getMessage ().equals ("Workflow id or key should not be empty" ))
134- .count (),
135- 2 );
136- }
137-
138- @ Test
139- void testFunctionCall () {
140- Workflow workflow =
141- new Workflow ()
142- .withId ("test-workflow" )
143- .withVersion ("1.0" )
144- .withStart (new Start ().withStateName ("start" ))
145- .withFunctions (
146- new Functions (
147- Arrays .asList (new FunctionDefinition ("expression" ).withType (Type .EXPRESSION ))))
148- .withStates (
149- Arrays .asList (
150- new OperationState ()
151- .withName ("start" )
152- .withType (OPERATION )
153- .withActions (
154- Arrays .asList (
155- new Action ().withFunctionRef (new FunctionRef ("expression" ))))
156- .withEnd (new End ())));
157- Assertions .assertTrue (new WorkflowValidatorImpl ().setWorkflow (workflow ).validate ().isEmpty ());
158- }
159123
160- @ Test
161- void testEventCall () {
162- Workflow workflow =
163- new Workflow ()
164- .withId ("test-workflow" )
165- .withVersion ("1.0" )
166- .withStart (new Start ().withStateName ("start" ))
167- .withEvents (new Events (Arrays .asList (new EventDefinition ().withName ("event" ))))
168- .withRetries (new Retries (Arrays .asList (new RetryDefinition ("start" , "PT1S" ))))
169- .withStates (
170- Arrays .asList (
171- new OperationState ()
172- .withName ("start" )
173- .withType (OPERATION )
174- .withActions (
175- Arrays .asList (
176- new Action ()
177- .withEventRef (new EventRef ().withTriggerEventRef ("event" ))))
178- .withEnd (new End ())));
179- Assertions .assertTrue (new WorkflowValidatorImpl ().setWorkflow (workflow ).validate ().isEmpty ());
124+ Assertions .assertEquals (
125+ "Workflow id or key should not be empty" , validationErrors .get (0 ).getMessage ());
126+ Assertions .assertEquals ("No states found" , validationErrors .get (1 ).getMessage ());
180127 }
181128
182129 @ Test
183130 public void testOperationStateNoFunctionRef () {
184131 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
185- Collection <ValidationError > validationErrors =
132+ List <ValidationError > validationErrors =
186133 workflowValidator
187134 .setSource (
188135 "{\n "
@@ -225,6 +172,10 @@ public void testOperationStateNoFunctionRef() {
225172
226173 Assertions .assertNotNull (validationErrors );
227174 Assertions .assertEquals (1 , validationErrors .size ());
175+
176+ Assertions .assertEquals (
177+ "Operation State action functionRef does not reference an existing workflow function definition" ,
178+ validationErrors .get (0 ).getMessage ());
228179 }
229180
230181 @ Test
@@ -242,16 +193,15 @@ public void testValidateWorkflowForOptionalStartStateAndWorkflowName() {
242193 .withDuration ("PT1M" )));
243194
244195 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
245- Collection <ValidationError > validationErrors =
246- workflowValidator .setWorkflow (workflow ).validate ();
196+ List <ValidationError > validationErrors = workflowValidator .setWorkflow (workflow ).validate ();
247197 Assertions .assertNotNull (validationErrors );
248198 Assertions .assertEquals (0 , validationErrors .size ());
249199 }
250200
251201 @ Test
252202 public void testValidateWorkflowForOptionalIterationParam () {
253203 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
254- Collection <ValidationError > validationErrors =
204+ List <ValidationError > validationErrors =
255205 workflowValidator
256206 .setSource (
257207 "{\n "
@@ -292,13 +242,15 @@ public void testValidateWorkflowForOptionalIterationParam() {
292242 .validate ();
293243
294244 Assertions .assertNotNull (validationErrors );
295- Assertions .assertEquals (1 , validationErrors .size ());
245+ Assertions .assertEquals (
246+ 1 ,
247+ validationErrors .size ()); // validation error raised for functionref not for iterationParam
296248 }
297249
298250 @ Test
299251 public void testMissingFunctionRefForCallbackState () {
300252 WorkflowValidator workflowValidator = new WorkflowValidatorImpl ();
301- Collection <ValidationError > validationErrors =
253+ List <ValidationError > validationErrors =
302254 workflowValidator
303255 .setSource (
304256 "{\n "
@@ -332,16 +284,54 @@ public void testMissingFunctionRefForCallbackState() {
332284 Assertions .assertNotNull (validationErrors );
333285 Assertions .assertEquals (2 , validationErrors .size ());
334286 Assertions .assertEquals (
335- validationErrors .stream ()
336- .filter (
337- v ->
338- v .getMessage ()
339- .equals (
340- "CallbackState event ref does not reference a defined workflow event definition" )
341- || v .getMessage ()
342- .equals (
343- "CallbackState action function ref does not reference a defined workflow function definition" ))
344- .count (),
345- 2 );
287+ "CallbackState event ref does not reference a defined workflow event definition" ,
288+ validationErrors .get (0 ).getMessage ());
289+ Assertions .assertEquals (
290+ "CallbackState action function ref does not reference a defined workflow function definition" ,
291+ validationErrors .get (1 ).getMessage ());
292+ }
293+
294+ @ Test
295+ void testFunctionCall () {
296+ Workflow workflow =
297+ new Workflow ()
298+ .withId ("test-workflow" )
299+ .withVersion ("1.0" )
300+ .withStart (new Start ().withStateName ("start" ))
301+ .withFunctions (
302+ new Functions (
303+ Arrays .asList (new FunctionDefinition ("expression" ).withType (Type .EXPRESSION ))))
304+ .withStates (
305+ Arrays .asList (
306+ new OperationState ()
307+ .withName ("start" )
308+ .withType (OPERATION )
309+ .withActions (
310+ Arrays .asList (
311+ new Action ().withFunctionRef (new FunctionRef ("expression" ))))
312+ .withEnd (new End ())));
313+ Assertions .assertTrue (new WorkflowValidatorImpl ().setWorkflow (workflow ).validate ().isEmpty ());
314+ }
315+
316+ @ Test
317+ void testEventCall () {
318+ Workflow workflow =
319+ new Workflow ()
320+ .withId ("test-workflow" )
321+ .withVersion ("1.0" )
322+ .withStart (new Start ().withStateName ("start" ))
323+ .withEvents (new Events (Arrays .asList (new EventDefinition ().withName ("event" ))))
324+ .withRetries (new Retries (Arrays .asList (new RetryDefinition ("start" , "PT1S" ))))
325+ .withStates (
326+ Arrays .asList (
327+ new OperationState ()
328+ .withName ("start" )
329+ .withType (OPERATION )
330+ .withActions (
331+ Arrays .asList (
332+ new Action ()
333+ .withEventRef (new EventRef ().withTriggerEventRef ("event" ))))
334+ .withEnd (new End ())));
335+ Assertions .assertTrue (new WorkflowValidatorImpl ().setWorkflow (workflow ).validate ().isEmpty ());
346336 }
347337}
0 commit comments