|
33 | 33 | import static org.junit.jupiter.api.Assertions.assertEquals; |
34 | 34 | import static org.junit.jupiter.api.Assertions.assertInstanceOf; |
35 | 35 | import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 36 | +import static org.junit.jupiter.api.Assertions.assertNull; |
36 | 37 | import static org.junit.jupiter.api.Assertions.assertThrows; |
37 | 38 | import static org.junit.jupiter.api.Assertions.assertTrue; |
38 | 39 |
|
|
57 | 58 | import io.serverlessworkflow.api.types.RunTaskConfiguration; |
58 | 59 | import io.serverlessworkflow.api.types.SetTask; |
59 | 60 | import io.serverlessworkflow.api.types.TaskItem; |
| 61 | +import io.serverlessworkflow.api.types.TaskMetadata; |
60 | 62 | import io.serverlessworkflow.api.types.TryTask; |
61 | 63 | import io.serverlessworkflow.api.types.TryTaskCatch; |
62 | 64 | import io.serverlessworkflow.api.types.Use; |
@@ -97,6 +99,40 @@ void testWorkflowDocumentExplicit() { |
97 | 99 | assertEquals("1.2.3", doc.getVersion()); |
98 | 100 | } |
99 | 101 |
|
| 102 | + @Test |
| 103 | + void testTaskMetadata() { |
| 104 | + Workflow wf = |
| 105 | + WorkflowBuilder.workflow("flowWithTaskMetadata") |
| 106 | + .tasks( |
| 107 | + d -> |
| 108 | + d.set( |
| 109 | + "described", |
| 110 | + s -> |
| 111 | + s.expr("$.value = 'test'") |
| 112 | + .metadata( |
| 113 | + m -> |
| 114 | + m.description("Exit when counter reaches 10") |
| 115 | + .put("exitConditionDescription", "counter == 10") |
| 116 | + .put("weight", 42))) |
| 117 | + .set("plain", s -> s.expr("$.other = 'value'"))) |
| 118 | + .build(); |
| 119 | + |
| 120 | + List<TaskItem> items = wf.getDo(); |
| 121 | + assertEquals(2, items.size(), "There should be two tasks"); |
| 122 | + |
| 123 | + SetTask described = items.get(0).getTask().getSetTask(); |
| 124 | + TaskMetadata metadata = described.getMetadata(); |
| 125 | + assertNotNull(metadata, "Task metadata should be present"); |
| 126 | + Map<String, Object> props = metadata.getAdditionalProperties(); |
| 127 | + assertEquals(3, props.size(), "Metadata should hold three entries"); |
| 128 | + assertEquals("Exit when counter reaches 10", props.get(TaskMetadataBuilder.DESCRIPTION)); |
| 129 | + assertEquals("counter == 10", props.get("exitConditionDescription")); |
| 130 | + assertEquals(42, props.get("weight")); |
| 131 | + |
| 132 | + SetTask plain = items.get(1).getTask().getSetTask(); |
| 133 | + assertNull(plain.getMetadata(), "Tasks without metadata() should not have metadata set"); |
| 134 | + } |
| 135 | + |
100 | 136 | @Test |
101 | 137 | void testUseAuthenticationsBasic() { |
102 | 138 | Workflow wf = |
|
0 commit comments