1919
2020import com .fasterxml .jackson .databind .JsonNode ;
2121import com .fasterxml .jackson .databind .ObjectMapper ;
22+ import com .fasterxml .jackson .databind .node .ArrayNode ;
2223import com .fasterxml .jackson .databind .node .ObjectNode ;
2324import io .serverlessworkflow .api .WorkflowReader ;
2425import io .serverlessworkflow .impl .json .JsonUtils ;
2728import java .util .concurrent .CompletableFuture ;
2829import java .util .stream .Stream ;
2930import org .junit .jupiter .api .BeforeAll ;
30- import org .junit .jupiter .api .Test ;
3131import org .junit .jupiter .params .ParameterizedTest ;
3232import org .junit .jupiter .params .provider .Arguments ;
3333import org .junit .jupiter .params .provider .MethodSource ;
@@ -58,15 +58,16 @@ void testEventListened(String listen, String emit, JsonNode expectedResult, Obje
5858 assertThat (waitingInstance .outputAsJsonNode ()).isEqualTo (expectedResult );
5959 }
6060
61- @ Test
62- void testUntilConsumed () throws IOException {
61+ @ ParameterizedTest
62+ @ MethodSource ("eventsListenerParameters" )
63+ void testEventsListened (String listen , String emit1 , String emit2 , JsonNode expectedResult )
64+ throws IOException {
6365 WorkflowDefinition listenDefinition =
64- appl .workflowDefinition (
65- WorkflowReader .readWorkflowFromClasspath ("listen-to-any-until-consumed.yaml" ));
66+ appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath (listen ));
6667 WorkflowDefinition emitDoctorDefinition =
67- appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath ("emit-doctor.yaml" ));
68+ appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath (emit1 ));
6869 WorkflowDefinition emitOutDefinition =
69- appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath ("emit-out.yaml" ));
70+ appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath (emit2 ));
7071 WorkflowInstance waitingInstance = listenDefinition .instance (Map .of ());
7172 CompletableFuture <JsonNode > future = waitingInstance .start ();
7273 assertThat (waitingInstance .status ()).isEqualTo (WorkflowStatus .RUNNING );
@@ -77,16 +78,30 @@ void testUntilConsumed() throws IOException {
7778 emitOutDefinition .instance (Map .of ()).start ().join ();
7879 assertThat (future ).isCompleted ();
7980 assertThat (waitingInstance .status ()).isEqualTo (WorkflowStatus .COMPLETED );
80- assertThat (waitingInstance .outputAsJsonNode ()).isEqualTo (temperature () );
81+ assertThat (waitingInstance .outputAsJsonNode ()).isEqualTo (expectedResult );
8182 }
8283
8384 private static Stream <Arguments > eventListenerParameters () {
8485 return Stream .of (
85- Arguments .of ("listen-to-any.yaml" , "emit.yaml" , cruellaDeVil (), Map .of ()),
86+ Arguments .of ("listen-to-any.yaml" , "emit.yaml" , array ( cruellaDeVil () ), Map .of ()),
8687 Arguments .of (
8788 "listen-to-any-filter.yaml" , "emit-doctor.yaml" , doctor (), Map .of ("temperature" , 39 )));
8889 }
8990
91+ private static Stream <Arguments > eventsListenerParameters () {
92+ return Stream .of (
93+ Arguments .of (
94+ "listen-to-all.yaml" ,
95+ "emit-doctor.yaml" ,
96+ "emit.yaml" ,
97+ array (temperature (), cruellaDeVil ())),
98+ Arguments .of (
99+ "listen-to-any-until-consumed.yaml" ,
100+ "emit-doctor.yaml" ,
101+ "emit-out.yaml" ,
102+ array (temperature ())));
103+ }
104+
90105 private static JsonNode cruellaDeVil () {
91106 ObjectMapper mapper = JsonUtils .mapper ();
92107 ObjectNode node = mapper .createObjectNode ();
@@ -97,21 +112,24 @@ private static JsonNode cruellaDeVil() {
97112 mapper
98113 .createArrayNode ()
99114 .add (mapper .createObjectNode ().put ("breed" , "dalmatian" ).put ("quantity" , 101 )));
100- return mapper . createArrayNode (). add ( node ) ;
115+ return node ;
101116 }
102117
103118 private static JsonNode doctor () {
104- ObjectMapper mapper = JsonUtils .mapper ();
105- ObjectNode node = mapper .createObjectNode ();
106- node .put ("temperature" , 39 );
119+ ObjectNode node = temperature ();
107120 node .put ("isSick" , true );
108- return mapper . createArrayNode (). add (node );
121+ return array (node );
109122 }
110123
111- private static JsonNode temperature () {
112- ObjectMapper mapper = JsonUtils .mapper ();
113- ObjectNode node = mapper .createObjectNode ();
124+ private static ObjectNode temperature () {
125+ ObjectNode node = JsonUtils .mapper ().createObjectNode ();
114126 node .put ("temperature" , 39 );
115- return mapper .createArrayNode ().add (node );
127+ return node ;
128+ }
129+
130+ private static JsonNode array (JsonNode ... jsonNodes ) {
131+ ArrayNode arrayNode = JsonUtils .mapper ().createArrayNode ();
132+ for (JsonNode node : jsonNodes ) arrayNode .add (node );
133+ return arrayNode ;
116134 }
117135}
0 commit comments