Skip to content

Commit 91e0c27

Browse files
committed
tests
1 parent 8ab63bb commit 91e0c27

File tree

8 files changed

+236
-84
lines changed

8 files changed

+236
-84
lines changed

test/WorkflowCore.IntegrationTests/Scenarios/BasicWorkflow.cs

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,22 @@
1313

1414
namespace WorkflowCore.IntegrationTests.Scenarios
1515
{
16-
[Subject(typeof(WorkflowHost))]
17-
public class BasicWorkflowTest : WithFakes<MoqFakeEngine>
16+
[Behaviors]
17+
public class BasicWorkflowBehavior
1818
{
19+
protected static int Step1Ticker = 0;
20+
protected static int Step2Ticker = 0;
21+
protected static string WorkflowId;
22+
protected static WorkflowInstance Instance;
1923

20-
static int Step1Ticker = 0;
21-
static int Step2Ticker = 0;
24+
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
25+
It should_execute_step1_once = () => Step1Ticker.ShouldEqual(1);
26+
It should_execute_step2_once = () => Step2Ticker.ShouldEqual(1);
27+
}
2228

29+
[Subject(typeof(WorkflowHost))]
30+
public class BasicWorkflow : WithFakes<MoqFakeEngine>
31+
{
2332
public class Step1 : StepBody
2433
{
2534
public override ExecutionResult Run(IStepExecutionContext context)
@@ -29,7 +38,7 @@ public override ExecutionResult Run(IStepExecutionContext context)
2938
}
3039
}
3140

32-
class BasicWorkflow : IWorkflow
41+
class BasicWorkflowDef : IWorkflow
3342
{
3443
public string Id { get { return "BasicWorkflow"; } }
3544
public int Version { get { return 1; } }
@@ -45,35 +54,54 @@ public void Build(IWorkflowBuilder<Object> builder)
4554

4655
}
4756
}
48-
49-
static IWorkflowHost Host;
50-
static string WorkflowId;
51-
static IPersistenceProvider PersistenceProvider;
52-
static WorkflowInstance Instance;
5357

58+
protected Establish context;
59+
protected Cleanup after;
60+
protected Because of;
61+
62+
protected static int Step1Ticker = 0;
63+
protected static int Step2Ticker = 0;
64+
protected static IWorkflowHost Host;
65+
protected static string WorkflowId;
66+
protected static IPersistenceProvider PersistenceProvider;
67+
protected static WorkflowInstance Instance;
5468

55-
Establish context = () =>
69+
Behaves_like<BasicWorkflowBehavior> a_basic_workflow;
70+
71+
public BasicWorkflow()
72+
{
73+
context = EstablishContext;
74+
of = BecauseOf;
75+
after = CleanupAfter;
76+
}
77+
78+
protected virtual void ConfigureWorkflow(IServiceCollection services)
79+
{
80+
services.AddWorkflow();
81+
}
82+
83+
void EstablishContext()
5684
{
5785
//setup dependency injection
5886
IServiceCollection services = new ServiceCollection();
5987
services.AddLogging();
60-
services.AddWorkflow();
61-
88+
ConfigureWorkflow(services);
89+
6290
var serviceProvider = services.BuildServiceProvider();
6391

6492
//config logging
6593
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
6694
loggerFactory.AddConsole(LogLevel.Debug);
6795

68-
var registry = serviceProvider.GetService<IWorkflowRegistry>();
69-
registry.RegisterWorkflow(new BasicWorkflow());
96+
var registry = serviceProvider.GetService<IWorkflowRegistry>();
97+
registry.RegisterWorkflow(new BasicWorkflowDef());
7098

7199
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
72100
Host = serviceProvider.GetService<IWorkflowHost>();
73-
Host.Start();
74-
};
101+
Host.Start();
102+
}
75103

76-
Because of = () =>
104+
void BecauseOf()
77105
{
78106
WorkflowId = Host.StartWorkflow("BasicWorkflow").Result;
79107
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
@@ -84,17 +112,18 @@ public void Build(IWorkflowBuilder<Object> builder)
84112
counter++;
85113
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
86114
}
87-
};
115+
}
88116

89-
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
90-
It should_execute_step1_once = () => Step1Ticker.ShouldEqual(1);
91-
It should_execute_step2_once = () => Step2Ticker.ShouldEqual(1);
92-
93-
Cleanup after = () =>
117+
void CleanupAfter()
94118
{
95119
Host.Stop();
96-
};
97-
98-
120+
Step1Ticker = 0;
121+
Step2Ticker = 0;
122+
Host = null;
123+
WorkflowId = null;
124+
Instance = null;
125+
PersistenceProvider = null;
126+
}
99127
}
100128
}
129+

test/WorkflowCore.IntegrationTests/Scenarios/DataIO.cs

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,28 @@
1313

1414
namespace WorkflowCore.IntegrationTests.Scenarios
1515
{
16+
class DataIODataClass
17+
{
18+
public int Value1 { get; set; }
19+
public int Value2 { get; set; }
20+
public int Value3 { get; set; }
21+
}
22+
23+
[Behaviors]
24+
public class DataIOBehavior
25+
{
26+
static string WorkflowId;
27+
static IPersistenceProvider PersistenceProvider;
28+
static WorkflowInstance Instance;
29+
30+
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
31+
It should_have_a_return_value_of_5 = () => (Instance.Data as DataIODataClass).Value3.ShouldEqual(5);
32+
}
33+
1634
[Subject(typeof(WorkflowHost))]
1735
public class DataIO : WithFakes<MoqFakeEngine>
1836
{
19-
20-
public class AddNumbers : StepBody
37+
class AddNumbers : StepBody
2138
{
2239
public int Input1 { get; set; }
2340
public int Input2 { get; set; }
@@ -29,19 +46,12 @@ public override ExecutionResult Run(IStepExecutionContext context)
2946
return ExecutionResult.Next();
3047
}
3148
}
32-
33-
class MyDataClass
34-
{
35-
public int Value1 { get; set; }
36-
public int Value2 { get; set; }
37-
public int Value3 { get; set; }
38-
}
39-
40-
class DataIOWorkflow : IWorkflow<MyDataClass>
49+
50+
class DataIOWorkflow : IWorkflow<DataIODataClass>
4151
{
4252
public string Id { get { return "DataIOWorkflow"; } }
4353
public int Version { get { return 1; } }
44-
public void Build(IWorkflowBuilder<MyDataClass> builder)
54+
public void Build(IWorkflowBuilder<DataIODataClass> builder)
4555
{
4656
builder
4757
.StartWith<AddNumbers>()
@@ -56,13 +66,24 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
5666
static IPersistenceProvider PersistenceProvider;
5767
static WorkflowInstance Instance;
5868

69+
Establish context;
5970

60-
Establish context = () =>
71+
public DataIO()
72+
{
73+
context = EstablishContext;
74+
}
75+
76+
protected virtual void ConfigureWorkflow(IServiceCollection services)
77+
{
78+
services.AddWorkflow();
79+
}
80+
81+
void EstablishContext()
6182
{
6283
//setup dependency injection
6384
IServiceCollection services = new ServiceCollection();
6485
services.AddLogging();
65-
services.AddWorkflow();
86+
ConfigureWorkflow(services);
6687

6788
var serviceProvider = services.BuildServiceProvider();
6889

@@ -76,11 +97,11 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
7697
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
7798
Host = serviceProvider.GetService<IWorkflowHost>();
7899
Host.Start();
79-
};
100+
}
80101

81102
Because of = () =>
82103
{
83-
WorkflowId = Host.StartWorkflow("DataIOWorkflow", new MyDataClass() { Value1 = 2, Value2 = 3 }).Result;
104+
WorkflowId = Host.StartWorkflow("DataIOWorkflow", new DataIODataClass() { Value1 = 2, Value2 = 3 }).Result;
84105
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
85106
int counter = 0;
86107
while ((Instance.Status == WorkflowStatus.Runnable) && (counter < 60))
@@ -91,8 +112,7 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
91112
}
92113
};
93114

94-
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
95-
It should_have_a_return_value_of_5 = () => (Instance.Data as MyDataClass).Value3.ShouldEqual(5);
115+
Behaves_like<DataIOBehavior> a_data_io_workflow;
96116

97117
Cleanup after = () =>
98118
{

test/WorkflowCore.IntegrationTests/Scenarios/ExternalEvents.cs

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,30 @@
1313

1414
namespace WorkflowCore.IntegrationTests.Scenarios
1515
{
16-
[Subject(typeof(WorkflowHost))]
17-
public class ExternalEventsTest : WithFakes<MoqFakeEngine>
16+
class EventsDataClass
1817
{
18+
public string StrValue { get; set; }
19+
}
1920

20-
public class MyDataClass
21-
{
22-
public string StrValue { get; set; }
23-
}
21+
[Behaviors]
22+
public class ExternalEventsBehavior
23+
{
24+
static string WorkflowId;
25+
static IPersistenceProvider PersistenceProvider;
26+
static WorkflowInstance Instance;
27+
28+
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
29+
It should_have_a_return_value_of_pass = () => (Instance.Data as EventsDataClass).StrValue.ShouldEqual("Pass");
30+
}
2431

25-
class EventWorkflow : IWorkflow<MyDataClass>
32+
[Subject(typeof(WorkflowHost))]
33+
public class ExternalEventsTest : WithFakes<MoqFakeEngine>
34+
{
35+
class EventWorkflow : IWorkflow<EventsDataClass>
2636
{
2737
public string Id { get { return "EventWorkflow"; } }
2838
public int Version { get { return 1; } }
29-
public void Build(IWorkflowBuilder<MyDataClass> builder)
39+
public void Build(IWorkflowBuilder<EventsDataClass> builder)
3040
{
3141
builder
3242
.StartWith(context => ExecutionResult.Next())
@@ -40,13 +50,24 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
4050
static IPersistenceProvider PersistenceProvider;
4151
static WorkflowInstance Instance;
4252

53+
Establish context;
4354

44-
Establish context = () =>
55+
public ExternalEventsTest()
56+
{
57+
context = EstablishContext;
58+
}
59+
60+
protected virtual void ConfigureWorkflow(IServiceCollection services)
61+
{
62+
services.AddWorkflow();
63+
}
64+
65+
void EstablishContext()
4566
{
4667
//setup dependency injection
4768
IServiceCollection services = new ServiceCollection();
4869
services.AddLogging();
49-
services.AddWorkflow();
70+
ConfigureWorkflow(services);
5071

5172
var serviceProvider = services.BuildServiceProvider();
5273

@@ -60,11 +81,11 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
6081
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
6182
Host = serviceProvider.GetService<IWorkflowHost>();
6283
Host.Start();
63-
};
84+
}
6485

6586
Because of = () =>
6687
{
67-
WorkflowId = Host.StartWorkflow("EventWorkflow", new MyDataClass() { StrValue = "0" }).Result;
88+
WorkflowId = Host.StartWorkflow("EventWorkflow", new EventsDataClass() { StrValue = "0" }).Result;
6889

6990
int counter = 0;
7091
while ((PersistenceProvider.GetSubcriptions("MyEvent", "0", DateTime.MaxValue).Result.Count() == 0) && (counter < 60))
@@ -85,8 +106,7 @@ public void Build(IWorkflowBuilder<MyDataClass> builder)
85106
}
86107
};
87108

88-
It should_be_marked_as_complete = () => Instance.Status.ShouldEqual(WorkflowStatus.Complete);
89-
It should_have_a_return_value_of_pass = () => (Instance.Data as MyDataClass).StrValue.ShouldEqual("Pass");
109+
Behaves_like<ExternalEventsBehavior> events_workflow;
90110

91111
Cleanup after = () =>
92112
{

0 commit comments

Comments
 (0)