Skip to content

Commit de172a0

Browse files
committed
Added DefinitionLoader unittests for dynamic stored workflow definitions
1 parent ee4272f commit de172a0

File tree

5 files changed

+107
-1
lines changed

5 files changed

+107
-1
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System.Collections.Generic;
2+
3+
namespace WorkflowCore.TestAssets.DataTypes
4+
{
5+
public class DynamicData
6+
{
7+
public Dictionary<string, object> Storage { get; set; } = new Dictionary<string, object>();
8+
9+
public object this[string propertyName]
10+
{
11+
get => Storage.TryGetValue(propertyName, out var value) ? value : null;
12+
set => Storage[propertyName] = value;
13+
}
14+
}
15+
}

test/WorkflowCore.TestAssets/Utils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public static string GetTestDefinitionJson()
2323
//return Properties.Resources.ResourceManager.GetString("stored_definition");
2424
return File.ReadAllText("stored-definition.json");
2525
}
26+
27+
public static string GetTestDefinitionDynamicJson()
28+
{
29+
return File.ReadAllText("stored-dynamic-definition.json");
30+
}
2631
}
2732
}
2833

test/WorkflowCore.TestAssets/WorkflowCore.TestAssets.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@
1313

1414
<ItemGroup>
1515
<None Remove="stored-definition.json" />
16+
<None Remove="stored-dynamic-definition.json" />
1617
</ItemGroup>
1718

1819
<ItemGroup>
20+
<EmbeddedResource Include="stored-dynamic-definition.json">
21+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
22+
</EmbeddedResource>
1923
<EmbeddedResource Include="stored-definition.json">
2024
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
2125
</EmbeddedResource>
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"Id": "Test",
3+
"Version": 1,
4+
"Description": "",
5+
"DataType": "WorkflowCore.TestAssets.DataTypes.DynamicData, WorkflowCore.TestAssets",
6+
"Steps": [
7+
{
8+
"Id": "Step1",
9+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
10+
"Inputs": { "Value": "data[\"Counter1\"]" },
11+
"Outputs": { "Counter1": "step.Value" },
12+
"NextStepId": "Step2"
13+
},
14+
{
15+
"Id": "Step2",
16+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
17+
"Inputs": { "Value": "data[\"Counter2\"]" },
18+
"Outputs": { "Counter2": "step.Value" },
19+
"NextStepId": "Step3"
20+
},
21+
{
22+
"Id": "Step3",
23+
"StepType": "WorkflowCore.Primitives.If, WorkflowCore",
24+
"NextStepId": "Step4",
25+
"Inputs": { "Condition": "object.Equals(data[\"Flag1\"], true)" },
26+
"Do": [
27+
[
28+
{
29+
"Id": "Step3.1.1",
30+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
31+
"Inputs": { "Value": "data[\"Counter3\"]" },
32+
"Outputs": { "Counter3": "step.Value" },
33+
"NextStepId": "Step3.1.2"
34+
},
35+
{
36+
"Id": "Step3.1.2",
37+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
38+
"Inputs": { "Value": "data[\"Counter4\"]" },
39+
"Outputs": { "Counter4": "step.Value" }
40+
}
41+
],
42+
[
43+
{
44+
"Id": "Step3.2.1",
45+
"StepType": "WorkflowCore.Primitives.WaitFor, WorkflowCore",
46+
"NextStepId": "Step3.2.2",
47+
"CancelCondition": "object.Equals(data[\"Flag2\"], true)",
48+
"Inputs": {
49+
"EventName": "\"Event1\"",
50+
"EventKey": "\"Key1\"",
51+
"EffectiveDate": "DateTime.Now"
52+
}
53+
},
54+
{
55+
"Id": "Step3.2.2",
56+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
57+
"Inputs": { "Value": "data[\"Counter5\"]" },
58+
"Outputs": { "Counter5": "step.Value" }
59+
}
60+
]
61+
]
62+
},
63+
{
64+
"Id": "Step4",
65+
"StepType": "WorkflowCore.TestAssets.Steps.Counter, WorkflowCore.TestAssets",
66+
"Inputs": { "Value": "data[\"Counter6\"]" },
67+
"Outputs": { "Counter6": "step.Value" }
68+
}
69+
]
70+
}

test/WorkflowCore.UnitTests/Services/DefinitionStorage/DefinitionLoaderTests.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,19 @@ public void ParseDefinition()
4343

4444
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.Id == "Test"))).MustHaveHappened();
4545
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.Version == 1))).MustHaveHappened();
46-
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.DataType == typeof(TestAssets.DataTypes.CounterBoard)))).MustHaveHappened();
46+
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.DataType == typeof(CounterBoard)))).MustHaveHappened();
47+
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(MatchTestDefinition, ""))).MustHaveHappened();
48+
}
49+
50+
51+
[Fact(DisplayName = "Should parse definition")]
52+
public void ParseDefinitionDynamic()
53+
{
54+
_subject.LoadDefinition(TestAssets.Utils.GetTestDefinitionDynamicJson());
55+
56+
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.Id == "Test"))).MustHaveHappened();
57+
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.Version == 1))).MustHaveHappened();
58+
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(x => x.DataType == typeof(DynamicData)))).MustHaveHappened();
4759
A.CallTo(() => _registry.RegisterWorkflow(A<WorkflowDefinition>.That.Matches(MatchTestDefinition, ""))).MustHaveHappened();
4860
}
4961

0 commit comments

Comments
 (0)