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