Skip to content

Commit 6fc3f0a

Browse files
committed
Add tests to the lambda module, integrate the DSL
Signed-off-by: Ricardo Zanini <[email protected]>
1 parent 3e2fdf8 commit 6fc3f0a

File tree

14 files changed

+213
-109
lines changed

14 files changed

+213
-109
lines changed

experimental/lambda/pom.xml

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2-
<modelVersion>4.0.0</modelVersion>
3-
<parent>
4-
<groupId>io.serverlessworkflow</groupId>
5-
<artifactId>serverlessworkflow-experimental</artifactId>
6-
<version>8.0.0-SNAPSHOT</version>
7-
</parent>
8-
<artifactId>serverlessworkflow-experimental-lambda</artifactId>
9-
<name>ServelessWorkflow:: Experimental:: lambda</name>
10-
<dependencies>
11-
<dependency>
12-
<groupId>io.serverlessworkflow</groupId>
13-
<artifactId>serverlessworkflow-experimental-types</artifactId>
14-
</dependency>
15-
<dependency>
16-
<groupId>io.serverlessworkflow</groupId>
17-
<artifactId>serverlessworkflow-impl-core</artifactId>
18-
</dependency>
19-
<dependency>
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>io.serverlessworkflow</groupId>
6+
<artifactId>serverlessworkflow-experimental</artifactId>
7+
<version>8.0.0-SNAPSHOT</version>
8+
</parent>
9+
<artifactId>serverlessworkflow-experimental-lambda</artifactId>
10+
<name>ServelessWorkflow:: Experimental:: lambda</name>
11+
<dependencies>
12+
<dependency>
13+
<groupId>io.serverlessworkflow</groupId>
14+
<artifactId>serverlessworkflow-experimental-types</artifactId>
15+
</dependency>
16+
<dependency>
17+
<groupId>io.serverlessworkflow</groupId>
18+
<artifactId>serverlessworkflow-impl-core</artifactId>
19+
</dependency>
20+
<dependency>
21+
<groupId>io.serverlessworkflow</groupId>
22+
<artifactId>serverlessworkflow-fluent-java</artifactId>
23+
</dependency>
24+
<dependency>
2025
<groupId>org.junit.jupiter</groupId>
2126
<artifactId>junit-jupiter-api</artifactId>
2227
<scope>test</scope>
@@ -41,5 +46,5 @@
4146
<artifactId>logback-classic</artifactId>
4247
<scope>test</scope>
4348
</dependency>
44-
</dependencies>
49+
</dependencies>
4550
</project>

experimental/lambda/src/test/java/io/serverless/workflow/impl/CallTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ void testForLoop() throws InterruptedException, ExecutionException {
8080
new Task()
8181
.withForTask(
8282
new ForTaskFunction()
83-
.withWhile(this::isEven)
83+
.withWhile(CallTest::isEven)
8484
.withCollection(v -> (Collection) v)
8585
.withFor(forConfig)
8686
.withDo(
@@ -91,7 +91,7 @@ void testForLoop() throws InterruptedException, ExecutionException {
9191
.withCallTask(
9292
new CallTaskJava(
9393
CallJava.loopFunction(
94-
this::sum,
94+
CallTest::sum,
9595
forConfig.getEach()))))))))));
9696

9797
assertThat(
@@ -124,35 +124,35 @@ void testSwitch() throws InterruptedException, ExecutionException {
124124
new SwitchItem(
125125
"odd",
126126
new SwitchCaseFunction()
127-
.withPredicate(this::isOdd)
127+
.withPredicate(CallTest::isOdd)
128128
.withThen(
129129
new FlowDirective()
130130
.withFlowDirectiveEnum(
131131
FlowDirectiveEnum.END))))))),
132132
new TaskItem(
133133
"java",
134134
new Task()
135-
.withCallTask(new CallTaskJava(CallJava.function(this::zero))))));
135+
.withCallTask(new CallTaskJava(CallJava.function(CallTest::zero))))));
136136

137137
WorkflowDefinition definition = app.workflowDefinition(workflow);
138138
assertThat(definition.instance(3).start().get().asNumber().orElseThrow()).isEqualTo(3);
139139
assertThat(definition.instance(4).start().get().asNumber().orElseThrow()).isEqualTo(0);
140140
}
141141
}
142142

143-
private boolean isEven(Object model, Integer number) {
143+
public static boolean isEven(Object model, Integer number) {
144144
return !isOdd(number);
145145
}
146146

147-
private boolean isOdd(Integer number) {
147+
public static boolean isOdd(Integer number) {
148148
return number % 2 != 0;
149149
}
150150

151-
private int zero(Integer value) {
151+
public static int zero(Integer value) {
152152
return 0;
153153
}
154154

155-
private Integer sum(Object model, Integer item) {
155+
public static Integer sum(Object model, Integer item) {
156156
return model instanceof Collection ? item : (Integer) model + item;
157157
}
158158
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/*
2+
* Copyright 2020-Present The Serverless Workflow Specification Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.serverless.workflow.impl;
17+
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
20+
import io.serverlessworkflow.api.types.FlowDirectiveEnum;
21+
import io.serverlessworkflow.api.types.Workflow;
22+
import io.serverlessworkflow.fluent.java.JavaWorkflowBuilder;
23+
import io.serverlessworkflow.impl.WorkflowApplication;
24+
import io.serverlessworkflow.impl.WorkflowDefinition;
25+
import java.util.Collection;
26+
import java.util.List;
27+
import java.util.concurrent.ExecutionException;
28+
import org.junit.jupiter.api.Test;
29+
30+
public class FluentDSLCallTest {
31+
32+
@Test
33+
void testJavaFunction() throws InterruptedException, ExecutionException {
34+
try (WorkflowApplication app = WorkflowApplication.builder().build()) {
35+
final Workflow workflow =
36+
JavaWorkflowBuilder.workflow("testJavaCall")
37+
.tasks(tasks -> tasks.callFn(f -> f.fn(JavaFunctions::getName)))
38+
.build();
39+
assertThat(
40+
app.workflowDefinition(workflow)
41+
.instance(new Person("Francisco", 33))
42+
.start()
43+
.get()
44+
.asText()
45+
.orElseThrow())
46+
.isEqualTo("Francisco Javierito");
47+
}
48+
}
49+
50+
@Test
51+
void testForLoop() throws InterruptedException, ExecutionException {
52+
try (WorkflowApplication app = WorkflowApplication.builder().build()) {
53+
Workflow workflow =
54+
JavaWorkflowBuilder.workflow()
55+
.tasks(
56+
t ->
57+
t.forFn(
58+
f ->
59+
f.whileC(CallTest::isEven)
60+
.collection(v -> (Collection<?>) v)
61+
.tasks(CallTest::sum)))
62+
.build();
63+
64+
assertThat(
65+
app.workflowDefinition(workflow)
66+
.instance(List.of(2, 4, 6))
67+
.start()
68+
.get()
69+
.asNumber()
70+
.orElseThrow())
71+
.isEqualTo(12);
72+
}
73+
}
74+
75+
@Test
76+
void testSwitch() throws InterruptedException, ExecutionException {
77+
try (WorkflowApplication app = WorkflowApplication.builder().build()) {
78+
Workflow workflow =
79+
JavaWorkflowBuilder.workflow()
80+
.tasks(
81+
tasks ->
82+
tasks
83+
.switchFn(
84+
switchOdd ->
85+
switchOdd.items(
86+
item ->
87+
item.when(CallTest::isOdd).then(FlowDirectiveEnum.END)))
88+
.callFn(callJava -> callJava.fn(CallTest::zero)))
89+
.build();
90+
91+
WorkflowDefinition definition = app.workflowDefinition(workflow);
92+
assertThat(definition.instance(3).start().get().asNumber().orElseThrow()).isEqualTo(3);
93+
assertThat(definition.instance(4).start().get().asNumber().orElseThrow()).isEqualTo(0);
94+
}
95+
}
96+
}

experimental/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@
3030
<artifactId>serverlessworkflow-experimental-types</artifactId>
3131
<version>${project.version}</version>
3232
</dependency>
33+
<dependency>
34+
<groupId>io.serverlessworkflow</groupId>
35+
<artifactId>serverlessworkflow-fluent-java</artifactId>
36+
<version>${project.version}</version>
37+
</dependency>
3338
</dependencies>
3439
</dependencyManagement>
3540
<modules>

fluent/java/src/main/java/io/serverlessworkflow/fluent/java/CallTaskJavaBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ protected CallTaskJavaBuilder self() {
3535
return this;
3636
}
3737

38-
public <T, V> CallTaskJavaBuilder function(Function<T, V> function) {
38+
public <T, V> CallTaskJavaBuilder fn(Function<T, V> function) {
3939
this.callTaskJava = new CallTaskJava(CallJava.function(function));
4040
super.setTask(this.callTaskJava.getCallJava());
4141
return this;

fluent/java/src/main/java/io/serverlessworkflow/fluent/java/DoTaskJavaBuilder.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,32 +31,32 @@ protected DoTaskJavaBuilder self() {
3131
}
3232

3333
public DoTaskJavaBuilder callFn(String name, Consumer<CallTaskJavaBuilder> consumer) {
34-
this.innerListBuilder().callFn(name, consumer);
34+
this.innerListBuilder().callJava(name, consumer);
3535
return this;
3636
}
3737

3838
public DoTaskJavaBuilder callFn(Consumer<CallTaskJavaBuilder> consumer) {
39-
this.innerListBuilder().callFn(consumer);
39+
this.innerListBuilder().callJava(consumer);
4040
return this;
4141
}
4242

43-
public DoTaskJavaBuilder forEachFn(String name, Consumer<ForTaskJavaBuilder> consumer) {
44-
this.innerListBuilder().forEachFn(name, consumer);
43+
public DoTaskJavaBuilder forFn(String name, Consumer<ForTaskJavaBuilder> consumer) {
44+
this.innerListBuilder().forFn(name, consumer);
4545
return this;
4646
}
4747

48-
public DoTaskJavaBuilder forEachFn(Consumer<ForTaskJavaBuilder> consumer) {
49-
this.innerListBuilder().forEachFn(consumer);
48+
public DoTaskJavaBuilder forFn(Consumer<ForTaskJavaBuilder> consumer) {
49+
this.innerListBuilder().forFn(consumer);
5050
return this;
5151
}
5252

53-
public DoTaskJavaBuilder switchCaseFn(String name, Consumer<SwitchTaskJavaBuilder> consumer) {
54-
this.innerListBuilder().switchCaseFn(name, consumer);
53+
public DoTaskJavaBuilder switchFn(String name, Consumer<SwitchTaskJavaBuilder> consumer) {
54+
this.innerListBuilder().switchFn(name, consumer);
5555
return this;
5656
}
5757

58-
public DoTaskJavaBuilder switchCaseFn(Consumer<SwitchTaskJavaBuilder> consumer) {
59-
this.innerListBuilder().switchCaseFn(consumer);
58+
public DoTaskJavaBuilder switchFn(Consumer<SwitchTaskJavaBuilder> consumer) {
59+
this.innerListBuilder().switchFn(consumer);
6060
return this;
6161
}
6262
}

fluent/java/src/main/java/io/serverlessworkflow/fluent/java/ForTaskJavaBuilder.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ protected ForTaskJavaBuilder self() {
5050
return this;
5151
}
5252

53-
public <T, V> ForTaskJavaBuilder whileCondition(LoopPredicate<T, V> predicate) {
53+
public <T, V> ForTaskJavaBuilder whileC(LoopPredicate<T, V> predicate) {
5454
this.forTaskFunction.withWhile(predicate);
5555
return this;
5656
}
5757

58-
public <T, V> ForTaskJavaBuilder whileCondition(LoopPredicateIndex<T, V> predicate) {
58+
public <T, V> ForTaskJavaBuilder whileC(LoopPredicateIndex<T, V> predicate) {
5959
this.forTaskFunction.withWhile(predicate);
6060
return this;
6161
}
@@ -65,7 +65,7 @@ public <T> ForTaskJavaBuilder collection(Function<T, Collection<?>> collectionF)
6565
return this;
6666
}
6767

68-
public <T, V, R> ForTaskJavaBuilder doTasks(String name, LoopFunction<T, V, R> function) {
68+
public <T, V, R> ForTaskJavaBuilder tasks(String name, LoopFunction<T, V, R> function) {
6969
this.items.add(
7070
new TaskItem(
7171
name,
@@ -77,11 +77,11 @@ public <T, V, R> ForTaskJavaBuilder doTasks(String name, LoopFunction<T, V, R> f
7777
return this;
7878
}
7979

80-
public <T, V, R> ForTaskJavaBuilder doTasks(LoopFunction<T, V, R> function) {
81-
return this.doTasks(UUID.randomUUID().toString(), function);
80+
public <T, V, R> ForTaskJavaBuilder tasks(LoopFunction<T, V, R> function) {
81+
return this.tasks(UUID.randomUUID().toString(), function);
8282
}
8383

84-
public ForTaskJavaBuilder doTasks(Consumer<TaskItemListJavaBuilder> consumer) {
84+
public ForTaskJavaBuilder tasks(Consumer<TaskItemListJavaBuilder> consumer) {
8585
final TaskItemListJavaBuilder builder = new TaskItemListJavaBuilder();
8686
consumer.accept(builder);
8787
this.items.addAll(builder.build());

fluent/java/src/main/java/io/serverlessworkflow/fluent/java/TaskItemListJavaBuilder.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,38 +37,37 @@ protected TaskItemListJavaBuilder newItemListBuilder() {
3737
return new TaskItemListJavaBuilder();
3838
}
3939

40-
public TaskItemListJavaBuilder callFn(String name, Consumer<CallTaskJavaBuilder> consumer) {
40+
public TaskItemListJavaBuilder callJava(String name, Consumer<CallTaskJavaBuilder> consumer) {
4141
this.requireNameAndConfig(name, consumer);
4242
final CallTaskJavaBuilder callTaskJavaBuilder = new CallTaskJavaBuilder();
4343
consumer.accept(callTaskJavaBuilder);
4444
return addTaskItem(new TaskItem(name, new Task().withCallTask(callTaskJavaBuilder.build())));
4545
}
4646

47-
public TaskItemListJavaBuilder callFn(Consumer<CallTaskJavaBuilder> consumer) {
48-
return this.callFn(UUID.randomUUID().toString(), consumer);
47+
public TaskItemListJavaBuilder callJava(Consumer<CallTaskJavaBuilder> consumer) {
48+
return this.callJava(UUID.randomUUID().toString(), consumer);
4949
}
5050

51-
public TaskItemListJavaBuilder forEachFn(String name, Consumer<ForTaskJavaBuilder> consumer) {
51+
public TaskItemListJavaBuilder forFn(String name, Consumer<ForTaskJavaBuilder> consumer) {
5252
this.requireNameAndConfig(name, consumer);
5353
final ForTaskJavaBuilder forTaskJavaBuilder = new ForTaskJavaBuilder();
5454
consumer.accept(forTaskJavaBuilder);
5555
return this.addTaskItem(new TaskItem(name, new Task().withForTask(forTaskJavaBuilder.build())));
5656
}
5757

58-
public TaskItemListJavaBuilder forEachFn(Consumer<ForTaskJavaBuilder> consumer) {
59-
return this.forEachFn(UUID.randomUUID().toString(), consumer);
58+
public TaskItemListJavaBuilder forFn(Consumer<ForTaskJavaBuilder> consumer) {
59+
return this.forFn(UUID.randomUUID().toString(), consumer);
6060
}
6161

62-
public TaskItemListJavaBuilder switchCaseFn(
63-
String name, Consumer<SwitchTaskJavaBuilder> consumer) {
62+
public TaskItemListJavaBuilder switchFn(String name, Consumer<SwitchTaskJavaBuilder> consumer) {
6463
this.requireNameAndConfig(name, consumer);
6564
final SwitchTaskJavaBuilder switchTaskJavaBuilder = new SwitchTaskJavaBuilder();
6665
consumer.accept(switchTaskJavaBuilder);
6766
return this.addTaskItem(
6867
new TaskItem(name, new Task().withSwitchTask(switchTaskJavaBuilder.build())));
6968
}
7069

71-
public TaskItemListJavaBuilder switchCaseFn(Consumer<SwitchTaskJavaBuilder> consumer) {
72-
return this.switchCaseFn(UUID.randomUUID().toString(), consumer);
70+
public TaskItemListJavaBuilder switchFn(Consumer<SwitchTaskJavaBuilder> consumer) {
71+
return this.switchFn(UUID.randomUUID().toString(), consumer);
7372
}
7473
}

0 commit comments

Comments
 (0)