Skip to content

Commit ef688c8

Browse files
committed
tests
1 parent 91e0c27 commit ef688c8

30 files changed

+616
-603
lines changed

src/extensions/WorkflowCore.Users/WorkflowCore.Users.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
1818
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1919
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
20+
<Description>Provides extensions for Workflow Core to enable human workflows.</Description>
21+
<Version>1.1.1</Version>
2022
</PropertyGroup>
2123

2224
<ItemGroup>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using Machine.Specifications;
2+
using Microsoft.Extensions.DependencyInjection;
3+
using Microsoft.Extensions.Logging;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Text;
7+
using WorkflowCore.Interface;
8+
using WorkflowCore.Models;
9+
10+
namespace WorkflowCore.IntegrationTests.Scenarios
11+
{
12+
public abstract class BaseScenario<TWorkflow, TData>
13+
where TWorkflow : IWorkflow<TData>, new()
14+
where TData : new()
15+
{
16+
protected static IWorkflowHost Host;
17+
protected static IPersistenceProvider PersistenceProvider;
18+
//protected static string WorkflowId;
19+
//protected static WorkflowInstance Instance;
20+
21+
protected Establish context;
22+
protected Cleanup after;
23+
24+
public BaseScenario()
25+
{
26+
context = EstablishContext;
27+
after = CleanupAfter;
28+
}
29+
30+
protected abstract void ConfigureWorkflow(IServiceCollection services);
31+
32+
protected virtual void EstablishContext()
33+
{
34+
//setup dependency injection
35+
IServiceCollection services = new ServiceCollection();
36+
services.AddLogging();
37+
ConfigureWorkflow(services);
38+
var serviceProvider = services.BuildServiceProvider();
39+
40+
//config logging
41+
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
42+
loggerFactory.AddConsole(LogLevel.Debug);
43+
44+
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
45+
Host = serviceProvider.GetService<IWorkflowHost>();
46+
Host.RegisterWorkflow<TWorkflow, TData>();
47+
Host.Start();
48+
}
49+
50+
protected virtual void CleanupAfter()
51+
{
52+
Host.Stop();
53+
Host = null;
54+
//WorkflowId = null;
55+
//Instance = null;
56+
PersistenceProvider = null;
57+
}
58+
}
59+
}

test/WorkflowCore.IntegrationTests/Scenarios/BasicWorkflow.cs

Lines changed: 17 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ public class BasicWorkflowBehavior
2727
}
2828

2929
[Subject(typeof(WorkflowHost))]
30-
public class BasicWorkflow : WithFakes<MoqFakeEngine>
30+
public class BasicWorkflow : BaseScenario<BasicWorkflow.WorkflowDef, object>
3131
{
32+
protected static string WorkflowId;
33+
protected static WorkflowInstance Instance;
34+
3235
public class Step1 : StepBody
3336
{
3437
public override ExecutionResult Run(IStepExecutionContext context)
@@ -38,10 +41,10 @@ public override ExecutionResult Run(IStepExecutionContext context)
3841
}
3942
}
4043

41-
class BasicWorkflowDef : IWorkflow
44+
public class WorkflowDef : IWorkflow
4245
{
43-
public string Id { get { return "BasicWorkflow"; } }
44-
public int Version { get { return 1; } }
46+
public string Id => "BasicWorkflow";
47+
public int Version => 1;
4548
public void Build(IWorkflowBuilder<Object> builder)
4649
{
4750
builder
@@ -54,54 +57,18 @@ public void Build(IWorkflowBuilder<Object> builder)
5457

5558
}
5659
}
57-
58-
protected Establish context;
59-
protected Cleanup after;
60-
protected Because of;
61-
60+
6261
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;
62+
protected static int Step2Ticker = 0;
6863

6964
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)
65+
66+
protected override void ConfigureWorkflow(IServiceCollection services)
7967
{
8068
services.AddWorkflow();
8169
}
8270

83-
void EstablishContext()
84-
{
85-
//setup dependency injection
86-
IServiceCollection services = new ServiceCollection();
87-
services.AddLogging();
88-
ConfigureWorkflow(services);
89-
90-
var serviceProvider = services.BuildServiceProvider();
91-
92-
//config logging
93-
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
94-
loggerFactory.AddConsole(LogLevel.Debug);
95-
96-
var registry = serviceProvider.GetService<IWorkflowRegistry>();
97-
registry.RegisterWorkflow(new BasicWorkflowDef());
98-
99-
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
100-
Host = serviceProvider.GetService<IWorkflowHost>();
101-
Host.Start();
102-
}
103-
104-
void BecauseOf()
71+
Because of = () =>
10572
{
10673
WorkflowId = Host.StartWorkflow("BasicWorkflow").Result;
10774
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
@@ -110,20 +77,16 @@ void BecauseOf()
11077
{
11178
System.Threading.Thread.Sleep(500);
11279
counter++;
113-
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
80+
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
11481
}
115-
}
82+
};
11683

117-
void CleanupAfter()
84+
protected override void CleanupAfter()
11885
{
119-
Host.Stop();
86+
base.CleanupAfter();
12087
Step1Ticker = 0;
12188
Step2Ticker = 0;
122-
Host = null;
123-
WorkflowId = null;
124-
Instance = null;
125-
PersistenceProvider = null;
126-
}
89+
}
12790
}
12891
}
12992

test/WorkflowCore.IntegrationTests/Scenarios/DataIO.cs

Lines changed: 24 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,30 @@
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-
2316
[Behaviors]
2417
public class DataIOBehavior
2518
{
26-
static string WorkflowId;
27-
static IPersistenceProvider PersistenceProvider;
28-
static WorkflowInstance Instance;
19+
protected static string WorkflowId;
20+
protected static IPersistenceProvider PersistenceProvider;
21+
protected static WorkflowInstance Instance;
2922

3023
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);
24+
It should_have_a_return_value_of_5 = () => (Instance.Data as DataIO.DataClass).Value3.ShouldEqual(5);
3225
}
3326

3427
[Subject(typeof(WorkflowHost))]
35-
public class DataIO : WithFakes<MoqFakeEngine>
28+
public class DataIO : BaseScenario<DataIO.WorkflowDef, DataIO.DataClass>
3629
{
30+
protected static string WorkflowId;
31+
protected static WorkflowInstance Instance;
32+
33+
public class DataClass
34+
{
35+
public int Value1 { get; set; }
36+
public int Value2 { get; set; }
37+
public int Value3 { get; set; }
38+
}
39+
3740
class AddNumbers : StepBody
3841
{
3942
public int Input1 { get; set; }
@@ -47,11 +50,11 @@ public override ExecutionResult Run(IStepExecutionContext context)
4750
}
4851
}
4952

50-
class DataIOWorkflow : IWorkflow<DataIODataClass>
53+
public class WorkflowDef : IWorkflow<DataClass>
5154
{
52-
public string Id { get { return "DataIOWorkflow"; } }
53-
public int Version { get { return 1; } }
54-
public void Build(IWorkflowBuilder<DataIODataClass> builder)
55+
public string Id => "DataIOWorkflow";
56+
public int Version => 1;
57+
public void Build(IWorkflowBuilder<DataClass> builder)
5558
{
5659
builder
5760
.StartWith<AddNumbers>()
@@ -60,48 +63,15 @@ public void Build(IWorkflowBuilder<DataIODataClass> builder)
6063
.Output(data => data.Value3, step => step.Output);
6164
}
6265
}
63-
64-
static IWorkflowHost Host;
65-
static string WorkflowId;
66-
static IPersistenceProvider PersistenceProvider;
67-
static WorkflowInstance Instance;
68-
69-
Establish context;
70-
71-
public DataIO()
72-
{
73-
context = EstablishContext;
74-
}
75-
76-
protected virtual void ConfigureWorkflow(IServiceCollection services)
66+
67+
protected override void ConfigureWorkflow(IServiceCollection services)
7768
{
7869
services.AddWorkflow();
7970
}
80-
81-
void EstablishContext()
82-
{
83-
//setup dependency injection
84-
IServiceCollection services = new ServiceCollection();
85-
services.AddLogging();
86-
ConfigureWorkflow(services);
87-
88-
var serviceProvider = services.BuildServiceProvider();
89-
90-
//config logging
91-
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
92-
loggerFactory.AddConsole(LogLevel.Debug);
93-
94-
var registry = serviceProvider.GetService<IWorkflowRegistry>();
95-
registry.RegisterWorkflow(new DataIOWorkflow());
96-
97-
PersistenceProvider = serviceProvider.GetService<IPersistenceProvider>();
98-
Host = serviceProvider.GetService<IWorkflowHost>();
99-
Host.Start();
100-
}
101-
71+
10272
Because of = () =>
10373
{
104-
WorkflowId = Host.StartWorkflow("DataIOWorkflow", new DataIODataClass() { Value1 = 2, Value2 = 3 }).Result;
74+
WorkflowId = Host.StartWorkflow("DataIOWorkflow", new DataIO.DataClass() { Value1 = 2, Value2 = 3 }).Result;
10575
Instance = PersistenceProvider.GetWorkflowInstance(WorkflowId).Result;
10676
int counter = 0;
10777
while ((Instance.Status == WorkflowStatus.Runnable) && (counter < 60))
@@ -113,12 +83,6 @@ void EstablishContext()
11383
};
11484

11585
Behaves_like<DataIOBehavior> a_data_io_workflow;
116-
117-
Cleanup after = () =>
118-
{
119-
Host.Stop();
120-
};
121-
122-
86+
12387
}
12488
}

0 commit comments

Comments
 (0)