|
4 | 4 | from os import listdir |
5 | 5 |
|
6 | 6 | from serverlessworkflow.sdk.action import Action |
| 7 | +from serverlessworkflow.sdk.action_data_filter import ActionDataFilter |
7 | 8 | from serverlessworkflow.sdk.function import Function |
8 | 9 | from serverlessworkflow.sdk.function_ref import FunctionRef |
| 10 | +from serverlessworkflow.sdk.operation_state import OperationState |
9 | 11 | from serverlessworkflow.sdk.workflow import Workflow |
10 | 12 |
|
11 | 13 |
|
12 | 14 | class TestWorkflow(unittest.TestCase): |
13 | | - workflow = Workflow(id_="greeting", |
14 | | - name="Greeting Workflow", |
15 | | - description="Greet Someone", |
16 | | - version='1.0', |
17 | | - specVersion='0.8', |
18 | | - start="Greet", |
19 | | - states=[ |
20 | | - { |
21 | | - "name": "Greet", |
22 | | - "type": "operation", |
23 | | - "actions": [ |
24 | | - { |
25 | | - "functionRef": { |
26 | | - "refName": "greetingFunction", |
27 | | - "arguments": { |
28 | | - "name": "${ .person.name }" |
29 | | - } |
30 | | - }, |
31 | | - "actionDataFilter": { |
32 | | - "results": "${ .greeting }" |
33 | | - } |
34 | | - } |
35 | | - ], |
36 | | - "end": True |
| 15 | + workflow = Workflow( |
| 16 | + id_="greeting", |
| 17 | + name="Greeting Workflow", |
| 18 | + description="Greet Someone", |
| 19 | + version='1.0', |
| 20 | + specVersion='0.8', |
| 21 | + start="Greet", |
| 22 | + states=[ |
| 23 | + OperationState( |
| 24 | + name="Greet", |
| 25 | + type="operation", |
| 26 | + actions=[ |
| 27 | + Action( |
| 28 | + functionRef=FunctionRef( |
| 29 | + refName="greetingFunction", |
| 30 | + arguments={ |
| 31 | + "name": "${ .person.name }" |
37 | 32 | } |
38 | | - ], |
39 | | - functions=[ |
40 | | - { |
41 | | - "name": "greetingFunction", |
42 | | - "operation": "file://myapis/greetingapis.json#greeting" |
43 | | - } |
44 | | - ] |
| 33 | + ), |
| 34 | + actionDataFilter=ActionDataFilter( |
| 35 | + results="${ .greeting }" |
45 | 36 | ) |
| 37 | + ) |
| 38 | + ], |
| 39 | + end=True |
| 40 | + ) |
| 41 | + ], |
| 42 | + functions=[ |
| 43 | + Function(name="greetingFunction", |
| 44 | + operation="file://myapis/greetingapis.json#greeting") |
| 45 | + ] |
| 46 | + ) |
46 | 47 |
|
47 | 48 | def test_workflow_to_json(self): |
48 | 49 | expected = """{ |
@@ -106,6 +107,16 @@ def test_workflow_to_yaml(self): |
106 | 107 | """ |
107 | 108 | self.assertEqual(expected, self.workflow.to_yaml()) |
108 | 109 |
|
| 110 | + def test_programmatically_create_workflow(self): |
| 111 | + |
| 112 | + self.assertEqual("greeting", self.workflow.id) |
| 113 | + self.assertEqual("operation", self.workflow.states[0].type) |
| 114 | + self.assertTrue(isinstance(self.workflow.states[0], OperationState)) |
| 115 | + self.assertEqual(True, self.workflow.states[0].end) |
| 116 | + self.assertTrue(isinstance(self.workflow.states[0].actions[0], Action)) |
| 117 | + self.assertTrue(isinstance(self.workflow.states[0].actions[0].functionRef, FunctionRef)) |
| 118 | + self.assertTrue(isinstance(self.workflow.functions[0], Function)) |
| 119 | + |
109 | 120 | def test_workflow_from_source_json(self): |
110 | 121 | examples_dir = os.path.join(os.path.dirname(__file__), '../../examples') |
111 | 122 | examples = listdir(examples_dir) |
|
0 commit comments