Skip to content

Commit 00d3941

Browse files
authored
Merge pull request #13 from cdavernas/main
Signed-off-by: charles.davernas <[email protected]>
2 parents 18304ee + d992958 commit 00d3941

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2919
-90
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using FluentAssertions;
2+
using ServerlessWorkflow.Sdk.Models;
3+
using ServerlessWorkflow.Sdk.Services.Validation;
4+
using Xunit;
5+
6+
namespace ServerlessWorkflow.Sdk.UnitTests.Cases.Validation
7+
{
8+
9+
public class ActionValidationTests
10+
{
11+
12+
[Fact]
13+
public void Validate_Action_NoFunctionNorEvent_ShouldFail()
14+
{
15+
//arrange
16+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
17+
.StartsWith("fake", flow => flow.Callback())
18+
.End()
19+
.Build();
20+
var action = new ActionDefinition();
21+
22+
//act
23+
var result = new ActionDefinitionValidator(workflow).Validate(action);
24+
25+
//assert
26+
result.Should()
27+
.NotBeNull();
28+
result.Errors.Should()
29+
.NotBeNullOrEmpty()
30+
.And.HaveCount(3)
31+
.And.Contain(e => e.PropertyName == nameof(ActionDefinition.Event))
32+
.And.Contain(e => e.PropertyName == nameof(ActionDefinition.Function))
33+
.And.Contain(e => e.PropertyName == nameof(ActionDefinition.Subflow));
34+
}
35+
36+
}
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using FluentAssertions;
2+
using FluentValidation;
3+
using Microsoft.Extensions.DependencyInjection;
4+
using ServerlessWorkflow.Sdk.Models;
5+
using System;
6+
using Xunit;
7+
8+
namespace ServerlessWorkflow.Sdk.UnitTests.Cases.Validation
9+
{
10+
11+
public class CallbackStateValidationTests
12+
{
13+
14+
public CallbackStateValidationTests()
15+
{
16+
IServiceCollection services = new ServiceCollection();
17+
services.AddServerlessWorkflow();
18+
this.ServiceProvider = services.BuildServiceProvider();
19+
this.WorkflowDefinitionValidator = this.ServiceProvider.GetRequiredService<IValidator<WorkflowDefinition>>();
20+
}
21+
22+
protected IServiceProvider ServiceProvider { get; }
23+
24+
protected IValidator<WorkflowDefinition> WorkflowDefinitionValidator { get; }
25+
26+
[Fact]
27+
public void Validate_CallbackState_ActionNull_ShouldFail()
28+
{
29+
//arrange
30+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
31+
.StartsWith("fake", flow => flow.Callback())
32+
.End()
33+
.Build();
34+
35+
//act
36+
var result = this.WorkflowDefinitionValidator.Validate(workflow);
37+
38+
//assert
39+
result.Should()
40+
.NotBeNull();
41+
result.Errors.Should()
42+
.NotBeNullOrEmpty()
43+
.And.Contain(e => e.ErrorCode == "States[0]" && e.ErrorMessage.StartsWith($"{nameof(CallbackStateDefinition)}.{nameof(CallbackStateDefinition.Action)}"));
44+
}
45+
46+
[Fact]
47+
public void Validate_CallbackState_EventNull_ShouldFail()
48+
{
49+
//arrange
50+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
51+
.StartsWith("fake", flow => flow.Callback())
52+
.End()
53+
.Build();
54+
55+
//act
56+
var result = this.WorkflowDefinitionValidator.Validate(workflow);
57+
58+
//assert
59+
result.Should()
60+
.NotBeNull();
61+
result.Errors.Should()
62+
.NotBeNullOrEmpty()
63+
.And.Contain(e => e.ErrorCode == "States[0]" && e.ErrorMessage.Contains($"{nameof(CallbackStateDefinition)}.{nameof(CallbackStateDefinition.Event)}"));
64+
}
65+
66+
[Fact]
67+
public void Validate_CallbackState_EventNotFound_ShouldFail()
68+
{
69+
//arrange
70+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
71+
.StartsWith("fake", flow =>
72+
flow.Callback()
73+
.On("fake")
74+
.Action(action => action.Invoke("fake")))
75+
.End()
76+
.Build();
77+
78+
//act
79+
var result = this.WorkflowDefinitionValidator.Validate(workflow);
80+
81+
//assert
82+
result.Should()
83+
.NotBeNull();
84+
result.Errors.Should()
85+
.NotBeNullOrEmpty()
86+
.And.Contain(e => e.ErrorCode == "States[0]" && e.ErrorMessage.Contains($"{nameof(CallbackStateDefinition)}.{nameof(CallbackStateDefinition.Event)}"));
87+
}
88+
89+
}
90+
91+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
using FluentAssertions;
2+
using ServerlessWorkflow.Sdk.Models;
3+
using ServerlessWorkflow.Sdk.Services.Validation;
4+
using Xunit;
5+
6+
namespace ServerlessWorkflow.Sdk.UnitTests.Cases.Validation
7+
{
8+
public class EventReferenceValidationTests
9+
{
10+
11+
[Fact]
12+
public void Validate_EventReference_TriggerEventNotSet_ShouldFail()
13+
{
14+
//arrange
15+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
16+
.StartsWith("fake", flow => flow.Callback())
17+
.End()
18+
.Build();
19+
var eventRef = new EventReference();
20+
21+
//act
22+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
23+
24+
//assert
25+
result.Should()
26+
.NotBeNull();
27+
result.Errors.Should()
28+
.NotBeNullOrEmpty()
29+
.And.Contain(e => e.PropertyName == nameof(EventReference.TriggerEvent));
30+
}
31+
32+
[Fact]
33+
public void Validate_EventReference_TriggerEventNotFound_ShouldFail()
34+
{
35+
//arrange
36+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
37+
.StartsWith("fake", flow => flow.Callback())
38+
.End()
39+
.Build();
40+
var eventRef = new EventReference() { TriggerEvent = "fake" };
41+
42+
//act
43+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
44+
45+
//assert
46+
result.Should()
47+
.NotBeNull();
48+
result.Errors.Should()
49+
.NotBeNullOrEmpty()
50+
.And.Contain(e => e.PropertyName == nameof(EventReference.TriggerEvent));
51+
}
52+
53+
[Fact]
54+
public void Validate_EventReference_TriggerEventConsumed_ShouldFail()
55+
{
56+
//arrange
57+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
58+
.AddEvent(new EventDefinition() { Kind = EventKind.Consumed, Name = "fake" })
59+
.StartsWith("fake", flow => flow.Callback())
60+
.End()
61+
.Build();
62+
var eventRef = new EventReference() { TriggerEvent = "fake" };
63+
64+
//act
65+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
66+
67+
//assert
68+
result.Should()
69+
.NotBeNull();
70+
result.Errors.Should()
71+
.NotBeNullOrEmpty()
72+
.And.Contain(e => e.PropertyName == nameof(EventReference.TriggerEvent));
73+
}
74+
75+
[Fact]
76+
public void Validate_EventReference_ResultEventNotSet_ShouldFail()
77+
{
78+
//arrange
79+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
80+
.StartsWith("fake", flow => flow.Callback())
81+
.End()
82+
.Build();
83+
var eventRef = new EventReference() { TriggerEvent = "fake" };
84+
85+
//act
86+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
87+
88+
//assert
89+
result.Should()
90+
.NotBeNull();
91+
result.Errors.Should()
92+
.NotBeNullOrEmpty()
93+
.And.Contain(e => e.PropertyName == nameof(EventReference.ResultEvent));
94+
}
95+
96+
[Fact]
97+
public void Validate_EventReference_ResultEventNotFound_ShouldFail()
98+
{
99+
//arrange
100+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
101+
.StartsWith("fake", flow => flow.Callback())
102+
.End()
103+
.Build();
104+
var eventRef = new EventReference() { TriggerEvent = "fakeTrigger", ResultEvent = "fakeResult" };
105+
106+
//act
107+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
108+
109+
//assert
110+
result.Should()
111+
.NotBeNull();
112+
result.Errors.Should()
113+
.NotBeNullOrEmpty()
114+
.And.Contain(e => e.PropertyName == nameof(EventReference.ResultEvent));
115+
}
116+
117+
[Fact]
118+
public void Validate_EventReference_ResultEventProduced_ShouldFail()
119+
{
120+
//arrange
121+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
122+
.AddEvent(new EventDefinition() { Kind = EventKind.Produced, Name = "fakeResult" })
123+
.StartsWith("fake", flow => flow.Callback())
124+
.End()
125+
.Build();
126+
var eventRef = new EventReference() { TriggerEvent = "fakeTrigger", ResultEvent = "fakeResult" };
127+
128+
//act
129+
var result = new EventReferenceValidator(workflow).Validate(eventRef);
130+
131+
//assert
132+
result.Should()
133+
.NotBeNull();
134+
result.Errors.Should()
135+
.NotBeNullOrEmpty()
136+
.And.Contain(e => e.PropertyName == nameof(EventReference.ResultEvent));
137+
}
138+
139+
}
140+
141+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using FluentAssertions;
2+
using ServerlessWorkflow.Sdk.Models;
3+
using ServerlessWorkflow.Sdk.Services.Validation;
4+
using Xunit;
5+
6+
namespace ServerlessWorkflow.Sdk.UnitTests.Cases.Validation
7+
{
8+
9+
public class EventStateTriggerValidationTests
10+
{
11+
12+
[Fact]
13+
public void Validate_EventStateTrigger_NoEvents_ShouldFail()
14+
{
15+
//arrange
16+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
17+
.StartsWith("fake", flow => flow.Events())
18+
.End()
19+
.Build();
20+
var state = new EventStateDefinition();
21+
var trigger = new EventStateTriggerDefinition();
22+
23+
//act
24+
var result = new EventStateTriggerDefinitionValidator(workflow, state).Validate(trigger);
25+
26+
//assert
27+
result.Should()
28+
.NotBeNull();
29+
result.Errors.Should()
30+
.NotBeNullOrEmpty()
31+
.And.Contain(e => e.PropertyName == nameof(EventStateTriggerDefinition.Events));
32+
}
33+
34+
}
35+
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using FluentAssertions;
2+
using FluentValidation;
3+
using Microsoft.Extensions.DependencyInjection;
4+
using ServerlessWorkflow.Sdk.Models;
5+
using System;
6+
using Xunit;
7+
8+
namespace ServerlessWorkflow.Sdk.UnitTests.Cases.Validation
9+
{
10+
11+
public class EventStateValidationTests
12+
{
13+
14+
public EventStateValidationTests()
15+
{
16+
IServiceCollection services = new ServiceCollection();
17+
services.AddServerlessWorkflow();
18+
this.ServiceProvider = services.BuildServiceProvider();
19+
this.WorkflowDefinitionValidator = this.ServiceProvider.GetRequiredService<IValidator<WorkflowDefinition>>();
20+
}
21+
22+
protected IServiceProvider ServiceProvider { get; }
23+
24+
protected IValidator<WorkflowDefinition> WorkflowDefinitionValidator { get; }
25+
26+
[Fact]
27+
public void Validate_EventState_NoTriggers_ShouldFail()
28+
{
29+
//arrange
30+
var workflow = WorkflowDefinition.Create("fake", "fake", "fake")
31+
.StartsWith("fake", flow => flow.Events())
32+
.End()
33+
.Build();
34+
35+
//act
36+
var result = this.WorkflowDefinitionValidator.Validate(workflow);
37+
38+
//assert
39+
result.Should()
40+
.NotBeNull();
41+
result.Errors.Should()
42+
.NotBeNullOrEmpty()
43+
.And.Contain(e => e.ErrorCode == "States[0]" && e.ErrorMessage.StartsWith($"{nameof(EventStateDefinition)}.{nameof(EventStateDefinition.Triggers)}"));
44+
}
45+
46+
}
47+
48+
}

0 commit comments

Comments
 (0)