From 7fb738ab4e89626018dd562fa493064c1cf602b3 Mon Sep 17 00:00:00 2001 From: xavier Date: Thu, 21 Jan 2021 18:46:58 +0100 Subject: [PATCH 1/2] Fix testing with DI in Workflow Dependency injection is supported in Workflow but cannot be tested (fix) --- .../Scenarios/DiScenario.cs | 2 ++ .../WorkflowCore.Testing.csproj | 6 +++--- test/WorkflowCore.Testing/WorkflowTest.cs | 14 +++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs b/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs index 81a782264..2947f7b24 100644 --- a/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs +++ b/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs @@ -87,6 +87,8 @@ public abstract class DiScenario : WorkflowTest { protected void ConfigureHost(IServiceProvider serviceProvider) { + Workflow = serviceProvider.GetService(); + PersistenceProvider = serviceProvider.GetService(); Host = serviceProvider.GetService(); Host.RegisterWorkflow(); diff --git a/test/WorkflowCore.Testing/WorkflowCore.Testing.csproj b/test/WorkflowCore.Testing/WorkflowCore.Testing.csproj index 32f9c1363..f8ddd588e 100644 --- a/test/WorkflowCore.Testing/WorkflowCore.Testing.csproj +++ b/test/WorkflowCore.Testing/WorkflowCore.Testing.csproj @@ -2,9 +2,9 @@ netstandard2.0 - 2.3.0 - 2.3.0.0 - 2.3.0.0 + 2.3.1 + 2.3.1.0 + 2.3.1.0 Facilitates testing of workflows built on Workflow-Core diff --git a/test/WorkflowCore.Testing/WorkflowTest.cs b/test/WorkflowCore.Testing/WorkflowTest.cs index f61d6be0a..0d061a321 100644 --- a/test/WorkflowCore.Testing/WorkflowTest.cs +++ b/test/WorkflowCore.Testing/WorkflowTest.cs @@ -1,8 +1,6 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; @@ -13,12 +11,13 @@ namespace WorkflowCore.Testing { public abstract class WorkflowTest : IDisposable - where TWorkflow : IWorkflow, new() + where TWorkflow : class, IWorkflow where TData : class, new() { protected IWorkflowHost Host; protected IPersistenceProvider PersistenceProvider; protected List UnhandledStepErrors = new List(); + protected TWorkflow Workflow; protected virtual void Setup() { @@ -33,6 +32,8 @@ protected virtual void Setup() var loggerFactory = serviceProvider.GetService(); //loggerFactory.AddConsole(LogLevel.Debug); + Workflow = serviceProvider.GetService(); + PersistenceProvider = serviceProvider.GetService(); Host = serviceProvider.GetService(); Host.RegisterWorkflow(); @@ -53,19 +54,18 @@ protected void Host_OnStepError(WorkflowInstance workflow, WorkflowStep step, Ex protected virtual void ConfigureServices(IServiceCollection services) { services.AddWorkflow(); + services.AddTransient(); } public string StartWorkflow(TData data) { - var def = new TWorkflow(); - var workflowId = Host.StartWorkflow(def.Id, data).Result; + var workflowId = Host.StartWorkflow(Workflow.Id, data).Result; return workflowId; } public async Task StartWorkflowAsync(TData data) { - var def = new TWorkflow(); - var workflowId = await Host.StartWorkflow(def.Id, data); + var workflowId = await Host.StartWorkflow(Workflow.Id, data); return workflowId; } From b17917241aa958ab56980993e4b59b60ad38cfbd Mon Sep 17 00:00:00 2001 From: xavier Date: Thu, 21 Jan 2021 19:24:52 +0100 Subject: [PATCH 2/2] Fix IT fix: moved DI regstration --- test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs | 4 ++++ test/WorkflowCore.Testing/WorkflowTest.cs | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs b/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs index 2947f7b24..2579e2946 100644 --- a/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs +++ b/test/WorkflowCore.IntegrationTests/Scenarios/DiScenario.cs @@ -113,6 +113,7 @@ public DiMsTransientScenario() services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddLogging(); ConfigureServices(services); @@ -151,6 +152,7 @@ public DiMsScopedScenario() services.AddScoped(); services.AddTransient(); services.AddLogging(); + services.AddTransient(); ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); @@ -193,6 +195,7 @@ public DiAutoFacTransientScenario() builder.RegisterType().InstancePerDependency(); builder.RegisterType().InstancePerDependency(); builder.RegisterType().InstancePerDependency(); + builder.RegisterType().InstancePerDependency(); var container = builder.Build(); var serviceProvider = new AutofacServiceProvider(container); @@ -235,6 +238,7 @@ public DiAutoFacScopedScenario() builder.RegisterType().InstancePerLifetimeScope(); builder.RegisterType().InstancePerLifetimeScope(); builder.RegisterType().InstancePerLifetimeScope(); + builder.RegisterType().InstancePerLifetimeScope(); var container = builder.Build(); var serviceProvider = new AutofacServiceProvider(container); diff --git a/test/WorkflowCore.Testing/WorkflowTest.cs b/test/WorkflowCore.Testing/WorkflowTest.cs index 0d061a321..3fe13845b 100644 --- a/test/WorkflowCore.Testing/WorkflowTest.cs +++ b/test/WorkflowCore.Testing/WorkflowTest.cs @@ -24,6 +24,8 @@ protected virtual void Setup() //setup dependency injection IServiceCollection services = new ServiceCollection(); services.AddLogging(); + services.AddTransient(); + ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); @@ -54,7 +56,6 @@ protected void Host_OnStepError(WorkflowInstance workflow, WorkflowStep step, Ex protected virtual void ConfigureServices(IServiceCollection services) { services.AddWorkflow(); - services.AddTransient(); } public string StartWorkflow(TData data)