From e7bf3f5ab6b4609970c3d1c6bbe153c17c3f4cf9 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 19 Jan 2020 10:13:11 +0100 Subject: [PATCH] Fix tests --- Elsa.sln | 123 ++++++++---------- .../WorkflowExecutionContextExtensions.cs | 36 ----- .../Services/Models/Workflow.cs | 2 + .../Models/WorkflowExecutionContext.cs | 42 +++++- src/core/Elsa.Core/Services/WorkflowHost.cs | 8 +- .../Elsa.Core.UnitTests.csproj | 10 +- .../Elsa.Core.UnitTests/WorkflowHostTests.cs | 17 ++- 7 files changed, 120 insertions(+), 118 deletions(-) diff --git a/Elsa.sln b/Elsa.sln index 0c0a3f8a0..4607fabc3 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -34,24 +34,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.Timers", "s EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.MassTransit", "src\activities\Elsa.Activities.MassTransit\Elsa.Activities.MassTransit.csproj", "{C4939482-9447-47D1-B6AF-E9F8C6323841}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "persistence", "persistence", "{76710230-AC6D-4E54-9A06-15F34C155118}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.YesSql", "src\persistence\Elsa.Persistence.YesSql\Elsa.Persistence.YesSql.csproj", "{4DB0741F-EAD9-4E37-862D-A1DA12462B7D}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.UserTask", "src\activities\Elsa.Activities.UserTask\Elsa.Activities.UserTask.csproj", "{BC0F57E2-AB64-4026-B6E3-E03D9133DB26}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.EntityFrameworkCore", "src\persistence\Elsa.Persistence.EntityFrameworkCore\Elsa.Persistence.EntityFrameworkCore.csproj", "{349D4C87-E17F-4F51-B493-1994BF631D37}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dashboard", "dashboard", "{8B87D79A-F0DE-4F88-81D3-8C8C69108ADB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Dashboard", "src\dashboard\Elsa.Dashboard\Elsa.Dashboard.csproj", "{493FC3E3-34FE-4F8D-AF37-38A5F5541FBD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Persistence.MongoDb", "src\persistence\Elsa.Persistence.MongoDb\Elsa.Persistence.MongoDb.csproj", "{82CDD590-2409-4C7E-8AF4-07C7D718D4D8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.WorkflowDesigner", "src\dashboard\Elsa.WorkflowDesigner\Elsa.WorkflowDesigner.csproj", "{120E4BF9-4A42-4BB9-A0B2-9597160D6E37}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.DocumentDb", "src\persistence\Elsa.Persistence.DocumentDb\Elsa.Persistence.DocumentDb.csproj", "{39EBECE7-538B-431C-AAB7-901AB16E6D4A}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Dropbox", "src\activities\Elsa.Activities.Dropbox\Elsa.Activities.Dropbox.csproj", "{5A3C9D59-21FE-4BE3-A00A-FF3F198EEC97}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "utils", "utils", "{9E1AF14C-0BEC-4BC2-810C-85FC25A9DDD4}" @@ -64,16 +48,28 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Scripting.JavaScript", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Scripting.Liquid", "src\scripting\Elsa.Scripting.Liquid\Elsa.Scripting.Liquid.csproj", "{9A2D1E3E-328F-4E02-86F8-84974925C1E3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.ControlFlow", "src\activities\Elsa.Activities.ControlFlow\Elsa.Activities.ControlFlow.csproj", "{3FC85C9D-CC20-4F54-9936-029F19FBFBE1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Workflows", "src\activities\Elsa.Activities.Workflows\Elsa.Activities.Workflows.csproj", "{1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa", "src\core\Elsa\Elsa.csproj", "{ED2A4FE5-821B-46F7-B72F-E66DE0D66C93}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Dashboard.Web", "src\dashboard\Elsa.Dashboard.Web\Elsa.Dashboard.Web.csproj", "{7179277B-E692-43CA-8243-3FE4FC2DD1EA}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Activities.Reflection", "src\activities\Elsa.Activities.Reflection\Elsa.Activities.Reflection.csproj", "{1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "providers", "providers", "{67CF5B65-D24A-4280-AACE-FE96845D7925}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.SqlServer", "src\providers\Elsa.DistributedLocking.SqlServer\Elsa.DistributedLocking.SqlServer.csproj", "{7BE958AF-5394-4B41-A5D6-45244CB241D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.DocumentDb", "src\providers\Elsa.Persistence.DocumentDb\Elsa.Persistence.DocumentDb.csproj", "{36C1673C-FFD4-439A-8090-8858E26C6FD4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.EntityFrameworkCore", "src\providers\Elsa.Persistence.EntityFrameworkCore\Elsa.Persistence.EntityFrameworkCore.csproj", "{AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.MongoDb", "src\providers\Elsa.Persistence.MongoDb\Elsa.Persistence.MongoDb.csproj", "{122C17CF-CCE5-4F8E-9900-B7582865F6D9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.YesSql", "src\providers\Elsa.Persistence.YesSql\Elsa.Persistence.YesSql.csproj", "{235DA54C-336A-408F-903E-CD935012CEBC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E12F5CD9-0738-4F23-9438-26B65A0C53AA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Core.UnitTests", "test\unit\Elsa.Core.UnitTests\Elsa.Core.UnitTests.csproj", "{715A6E74-05CD-4236-9287-1643B074117E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Testing.Shared", "test\shared\Elsa.Testing.Shared\Elsa.Testing.Shared.csproj", "{BF39E5FD-C0A3-4FDE-850E-2E4CF063C301}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -108,34 +104,10 @@ Global {C4939482-9447-47D1-B6AF-E9F8C6323841}.Debug|Any CPU.Build.0 = Debug|Any CPU {C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4939482-9447-47D1-B6AF-E9F8C6323841}.Release|Any CPU.Build.0 = Release|Any CPU - {4DB0741F-EAD9-4E37-862D-A1DA12462B7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4DB0741F-EAD9-4E37-862D-A1DA12462B7D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4DB0741F-EAD9-4E37-862D-A1DA12462B7D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4DB0741F-EAD9-4E37-862D-A1DA12462B7D}.Release|Any CPU.Build.0 = Release|Any CPU {BC0F57E2-AB64-4026-B6E3-E03D9133DB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC0F57E2-AB64-4026-B6E3-E03D9133DB26}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC0F57E2-AB64-4026-B6E3-E03D9133DB26}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC0F57E2-AB64-4026-B6E3-E03D9133DB26}.Release|Any CPU.Build.0 = Release|Any CPU - {349D4C87-E17F-4F51-B493-1994BF631D37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {349D4C87-E17F-4F51-B493-1994BF631D37}.Debug|Any CPU.Build.0 = Debug|Any CPU - {349D4C87-E17F-4F51-B493-1994BF631D37}.Release|Any CPU.ActiveCfg = Release|Any CPU - {349D4C87-E17F-4F51-B493-1994BF631D37}.Release|Any CPU.Build.0 = Release|Any CPU - {493FC3E3-34FE-4F8D-AF37-38A5F5541FBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {493FC3E3-34FE-4F8D-AF37-38A5F5541FBD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {493FC3E3-34FE-4F8D-AF37-38A5F5541FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {493FC3E3-34FE-4F8D-AF37-38A5F5541FBD}.Release|Any CPU.Build.0 = Release|Any CPU - {82CDD590-2409-4C7E-8AF4-07C7D718D4D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {82CDD590-2409-4C7E-8AF4-07C7D718D4D8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {82CDD590-2409-4C7E-8AF4-07C7D718D4D8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {82CDD590-2409-4C7E-8AF4-07C7D718D4D8}.Release|Any CPU.Build.0 = Release|Any CPU - {120E4BF9-4A42-4BB9-A0B2-9597160D6E37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {120E4BF9-4A42-4BB9-A0B2-9597160D6E37}.Debug|Any CPU.Build.0 = Debug|Any CPU - {120E4BF9-4A42-4BB9-A0B2-9597160D6E37}.Release|Any CPU.ActiveCfg = Release|Any CPU - {120E4BF9-4A42-4BB9-A0B2-9597160D6E37}.Release|Any CPU.Build.0 = Release|Any CPU - {39EBECE7-538B-431C-AAB7-901AB16E6D4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {39EBECE7-538B-431C-AAB7-901AB16E6D4A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {39EBECE7-538B-431C-AAB7-901AB16E6D4A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {39EBECE7-538B-431C-AAB7-901AB16E6D4A}.Release|Any CPU.Build.0 = Release|Any CPU {5A3C9D59-21FE-4BE3-A00A-FF3F198EEC97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5A3C9D59-21FE-4BE3-A00A-FF3F198EEC97}.Debug|Any CPU.Build.0 = Debug|Any CPU {5A3C9D59-21FE-4BE3-A00A-FF3F198EEC97}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -152,26 +124,42 @@ Global {9A2D1E3E-328F-4E02-86F8-84974925C1E3}.Debug|Any CPU.Build.0 = Debug|Any CPU {9A2D1E3E-328F-4E02-86F8-84974925C1E3}.Release|Any CPU.ActiveCfg = Release|Any CPU {9A2D1E3E-328F-4E02-86F8-84974925C1E3}.Release|Any CPU.Build.0 = Release|Any CPU - {3FC85C9D-CC20-4F54-9936-029F19FBFBE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3FC85C9D-CC20-4F54-9936-029F19FBFBE1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3FC85C9D-CC20-4F54-9936-029F19FBFBE1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3FC85C9D-CC20-4F54-9936-029F19FBFBE1}.Release|Any CPU.Build.0 = Release|Any CPU - {1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D}.Release|Any CPU.Build.0 = Release|Any CPU {ED2A4FE5-821B-46F7-B72F-E66DE0D66C93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ED2A4FE5-821B-46F7-B72F-E66DE0D66C93}.Debug|Any CPU.Build.0 = Debug|Any CPU {ED2A4FE5-821B-46F7-B72F-E66DE0D66C93}.Release|Any CPU.ActiveCfg = Release|Any CPU {ED2A4FE5-821B-46F7-B72F-E66DE0D66C93}.Release|Any CPU.Build.0 = Release|Any CPU - {7179277B-E692-43CA-8243-3FE4FC2DD1EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7179277B-E692-43CA-8243-3FE4FC2DD1EA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7179277B-E692-43CA-8243-3FE4FC2DD1EA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7179277B-E692-43CA-8243-3FE4FC2DD1EA}.Release|Any CPU.Build.0 = Release|Any CPU {1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0}.Debug|Any CPU.Build.0 = Debug|Any CPU {1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0}.Release|Any CPU.ActiveCfg = Release|Any CPU {1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0}.Release|Any CPU.Build.0 = Release|Any CPU + {7BE958AF-5394-4B41-A5D6-45244CB241D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7BE958AF-5394-4B41-A5D6-45244CB241D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7BE958AF-5394-4B41-A5D6-45244CB241D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7BE958AF-5394-4B41-A5D6-45244CB241D4}.Release|Any CPU.Build.0 = Release|Any CPU + {36C1673C-FFD4-439A-8090-8858E26C6FD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36C1673C-FFD4-439A-8090-8858E26C6FD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36C1673C-FFD4-439A-8090-8858E26C6FD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36C1673C-FFD4-439A-8090-8858E26C6FD4}.Release|Any CPU.Build.0 = Release|Any CPU + {AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4}.Release|Any CPU.Build.0 = Release|Any CPU + {122C17CF-CCE5-4F8E-9900-B7582865F6D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {122C17CF-CCE5-4F8E-9900-B7582865F6D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {122C17CF-CCE5-4F8E-9900-B7582865F6D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {122C17CF-CCE5-4F8E-9900-B7582865F6D9}.Release|Any CPU.Build.0 = Release|Any CPU + {235DA54C-336A-408F-903E-CD935012CEBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {235DA54C-336A-408F-903E-CD935012CEBC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {235DA54C-336A-408F-903E-CD935012CEBC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {235DA54C-336A-408F-903E-CD935012CEBC}.Release|Any CPU.Build.0 = Release|Any CPU + {715A6E74-05CD-4236-9287-1643B074117E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {715A6E74-05CD-4236-9287-1643B074117E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {715A6E74-05CD-4236-9287-1643B074117E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {715A6E74-05CD-4236-9287-1643B074117E}.Release|Any CPU.Build.0 = Release|Any CPU + {BF39E5FD-C0A3-4FDE-850E-2E4CF063C301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF39E5FD-C0A3-4FDE-850E-2E4CF063C301}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF39E5FD-C0A3-4FDE-850E-2E4CF063C301}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF39E5FD-C0A3-4FDE-850E-2E4CF063C301}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -186,26 +174,23 @@ Global {D20FCB88-9DCA-49EA-9CC2-5B94DD935D30} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} {E4B71DC4-3E73-49C3-9B4E-CA13909F222D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} {C4939482-9447-47D1-B6AF-E9F8C6323841} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} - {76710230-AC6D-4E54-9A06-15F34C155118} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} - {4DB0741F-EAD9-4E37-862D-A1DA12462B7D} = {76710230-AC6D-4E54-9A06-15F34C155118} {BC0F57E2-AB64-4026-B6E3-E03D9133DB26} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} - {349D4C87-E17F-4F51-B493-1994BF631D37} = {76710230-AC6D-4E54-9A06-15F34C155118} - {8B87D79A-F0DE-4F88-81D3-8C8C69108ADB} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} - {493FC3E3-34FE-4F8D-AF37-38A5F5541FBD} = {8B87D79A-F0DE-4F88-81D3-8C8C69108ADB} - {82CDD590-2409-4C7E-8AF4-07C7D718D4D8} = {76710230-AC6D-4E54-9A06-15F34C155118} - {120E4BF9-4A42-4BB9-A0B2-9597160D6E37} = {8B87D79A-F0DE-4F88-81D3-8C8C69108ADB} - {39EBECE7-538B-431C-AAB7-901AB16E6D4A} = {76710230-AC6D-4E54-9A06-15F34C155118} {5A3C9D59-21FE-4BE3-A00A-FF3F198EEC97} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} {9E1AF14C-0BEC-4BC2-810C-85FC25A9DDD4} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} {5E230C5F-7A64-4E95-A790-DF40CC66DA31} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} {72DA50EC-8A99-4D4F-BF61-DEF105BDAE10} = {9E1AF14C-0BEC-4BC2-810C-85FC25A9DDD4} {DA91DAF2-4C59-4468-8F1D-6A500D218A1E} = {5E230C5F-7A64-4E95-A790-DF40CC66DA31} {9A2D1E3E-328F-4E02-86F8-84974925C1E3} = {5E230C5F-7A64-4E95-A790-DF40CC66DA31} - {3FC85C9D-CC20-4F54-9936-029F19FBFBE1} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} - {1BB8EC9E-AEBD-438B-9FA7-B7FA78999D7D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} {ED2A4FE5-821B-46F7-B72F-E66DE0D66C93} = {35F44BE9-13D0-417C-A01A-F0787BEE6DC3} - {7179277B-E692-43CA-8243-3FE4FC2DD1EA} = {8B87D79A-F0DE-4F88-81D3-8C8C69108ADB} {1689E6C1-DD2B-4ECC-B9C8-E6A7E4E6AAA0} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180} + {67CF5B65-D24A-4280-AACE-FE96845D7925} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} + {7BE958AF-5394-4B41-A5D6-45244CB241D4} = {67CF5B65-D24A-4280-AACE-FE96845D7925} + {36C1673C-FFD4-439A-8090-8858E26C6FD4} = {67CF5B65-D24A-4280-AACE-FE96845D7925} + {AE6CDFF5-8ADE-438C-89F0-5B48FC2C9FF4} = {67CF5B65-D24A-4280-AACE-FE96845D7925} + {122C17CF-CCE5-4F8E-9900-B7582865F6D9} = {67CF5B65-D24A-4280-AACE-FE96845D7925} + {235DA54C-336A-408F-903E-CD935012CEBC} = {67CF5B65-D24A-4280-AACE-FE96845D7925} + {715A6E74-05CD-4236-9287-1643B074117E} = {E12F5CD9-0738-4F23-9438-26B65A0C53AA} + {BF39E5FD-C0A3-4FDE-850E-2E4CF063C301} = {E12F5CD9-0738-4F23-9438-26B65A0C53AA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158} diff --git a/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs b/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs index a6811a585..c80247d46 100644 --- a/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs +++ b/src/core/Elsa.Abstractions/Extensions/WorkflowExecutionContextExtensions.cs @@ -22,42 +22,6 @@ namespace Elsa.Extensions return query; } - - public static IActivity GetActivity(this WorkflowExecutionContext workflowExecutionContext, string id) => workflowExecutionContext.Activities.FirstOrDefault(x => x.Id == id); - - public static WorkflowInstance CreateWorkflowInstance(this WorkflowExecutionContext workflowExecutionContext) - { - return workflowExecutionContext.UpdateWorkflowInstance(new WorkflowInstance - { - Id = workflowExecutionContext.InstanceId, - DefinitionId = workflowExecutionContext.DefinitionId, - Version = workflowExecutionContext.Version, - CreatedAt = workflowExecutionContext.ServiceProvider.GetRequiredService().GetCurrentInstant() - }); - } - - public static WorkflowInstance UpdateWorkflowInstance(this WorkflowExecutionContext workflowExecutionContext, WorkflowInstance workflowInstance) - { - workflowInstance.Variables = workflowExecutionContext.Variables; - workflowInstance.ScheduledActivities = new Stack(workflowExecutionContext.ScheduledActivities.Select(x => new Models.ScheduledActivity(x.Activity.Id, x.Input))); - workflowInstance.Activities = workflowExecutionContext.Activities.Select(x => new ActivityInstance(x.Id, x.Type, x.State, x.Output)).ToList(); - workflowInstance.BlockingActivities = new HashSet(workflowExecutionContext.BlockingActivities.Select(x => new BlockingActivity(x.Id, x.Type)), new BlockingActivityEqualityComparer()); - workflowInstance.Status = workflowExecutionContext.Status; - workflowInstance.CorrelationId = workflowExecutionContext.CorrelationId; - workflowInstance.Output = workflowExecutionContext.Output; - workflowInstance.ExecutionLog = workflowExecutionContext.ExecutionLog.Select(x => new Models.ExecutionLogEntry(x.Activity.Id, x.Timestamp)).ToList(); - - if (workflowExecutionContext.WorkflowFault != null) - { - workflowInstance.Fault = new Models.WorkflowFault - { - FaultedActivityId = workflowExecutionContext.WorkflowFault.FaultedActivity?.Id, - Message = workflowExecutionContext.WorkflowFault.Message - }; - } - - return workflowInstance; - } public static IEnumerable GetInboundConnections(this WorkflowExecutionContext workflowExecutionContext, IActivity activity) => workflowExecutionContext.Connections.Where(x => x.Target.Activity == activity); public static IEnumerable GetOutboundConnections(this WorkflowExecutionContext workflowExecutionContext, IActivity activity) => workflowExecutionContext.Connections.Where(x => x.Source.Activity == activity); diff --git a/src/core/Elsa.Abstractions/Services/Models/Workflow.cs b/src/core/Elsa.Abstractions/Services/Models/Workflow.cs index f2834c905..62c023f00 100644 --- a/src/core/Elsa.Abstractions/Services/Models/Workflow.cs +++ b/src/core/Elsa.Abstractions/Services/Models/Workflow.cs @@ -8,6 +8,8 @@ namespace Elsa.Services.Models { public Workflow() { + Activities = new List(); + Connections = new List(); } public Workflow( diff --git a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs index 8443486f5..5b223551c 100644 --- a/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs +++ b/src/core/Elsa.Abstractions/Services/Models/WorkflowExecutionContext.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Elsa.Comparers; using Elsa.Expressions; using Elsa.Models; using Microsoft.Extensions.Localization; @@ -13,7 +14,8 @@ namespace Elsa.Services.Models public class WorkflowExecutionContext { public WorkflowExecutionContext( - IExpressionEvaluator expressionEvaluator, + IExpressionEvaluator expressionEvaluator, + IClock clock, IServiceProvider serviceProvider, string definitionId, string instanceId, @@ -37,6 +39,7 @@ namespace Elsa.Services.Models Activities = activities.ToList(); Connections = connections.ToList(); ExpressionEvaluator = expressionEvaluator; + Clock = clock; ScheduledActivities = scheduledActivities != null ? new Stack(scheduledActivities) : new Stack(); BlockingActivities = blockingActivities != null ? new HashSet(blockingActivities) : new HashSet(); Variables = variables ?? new Variables(); @@ -78,6 +81,7 @@ namespace Elsa.Services.Models public ScheduledActivity PopScheduledActivity() => ScheduledActivity = ScheduledActivities.Pop(); public ScheduledActivity PeekScheduledActivity() => ScheduledActivities.Peek(); public IExpressionEvaluator ExpressionEvaluator { get; } + public IClock Clock { get; } public string InstanceId { get; set; } public int Version { get; } public string CorrelationId { get; set; } @@ -111,5 +115,41 @@ namespace Elsa.Services.Models { Status = WorkflowStatus.Completed; } + + public IActivity GetActivity(string id) => Activities.FirstOrDefault(x => x.Id == id); + + public WorkflowInstance CreateWorkflowInstance() + { + return UpdateWorkflowInstance(new WorkflowInstance + { + Id = InstanceId, + DefinitionId = DefinitionId, + Version = Version, + CreatedAt = Clock.GetCurrentInstant() + }); + } + + public WorkflowInstance UpdateWorkflowInstance(WorkflowInstance workflowInstance) + { + workflowInstance.Variables = Variables; + workflowInstance.ScheduledActivities = new Stack(ScheduledActivities.Select(x => new Elsa.Models.ScheduledActivity(x.Activity.Id, x.Input))); + workflowInstance.Activities = Activities.Select(x => new ActivityInstance(x.Id, x.Type, x.State, x.Output)).ToList(); + workflowInstance.BlockingActivities = new HashSet(BlockingActivities.Select(x => new BlockingActivity(x.Id, x.Type)), new BlockingActivityEqualityComparer()); + workflowInstance.Status = Status; + workflowInstance.CorrelationId = CorrelationId; + workflowInstance.Output = Output; + workflowInstance.ExecutionLog = ExecutionLog.Select(x => new Elsa.Models.ExecutionLogEntry(x.Activity.Id, x.Timestamp)).ToList(); + + if (WorkflowFault != null) + { + workflowInstance.Fault = new Elsa.Models.WorkflowFault + { + FaultedActivityId = WorkflowFault.FaultedActivity?.Id, + Message = WorkflowFault.Message + }; + } + + return workflowInstance; + } } } \ No newline at end of file diff --git a/src/core/Elsa.Core/Services/WorkflowHost.cs b/src/core/Elsa.Core/Services/WorkflowHost.cs index 56f2c7b4d..a97e594a4 100644 --- a/src/core/Elsa.Core/Services/WorkflowHost.cs +++ b/src/core/Elsa.Core/Services/WorkflowHost.cs @@ -13,6 +13,7 @@ using Elsa.Results; using Elsa.Services.Models; using MediatR; using Microsoft.Extensions.Logging; +using NodaTime; using ScheduledActivity = Elsa.Services.Models.ScheduledActivity; namespace Elsa.Services @@ -28,7 +29,7 @@ namespace Elsa.Services private readonly IWorkflowInstanceStore workflowInstanceStore; private readonly IWorkflowActivator workflowActivator; private readonly IExpressionEvaluator expressionEvaluator; - private readonly IIdGenerator idGenerator; + private readonly IClock clock; private readonly IMediator mediator; private readonly IServiceProvider serviceProvider; private readonly ILogger logger; @@ -38,7 +39,7 @@ namespace Elsa.Services IWorkflowInstanceStore workflowInstanceStore, IWorkflowActivator workflowActivator, IExpressionEvaluator expressionEvaluator, - IIdGenerator idGenerator, + IClock clock, IMediator mediator, IServiceProvider serviceProvider, ILogger logger) @@ -47,7 +48,7 @@ namespace Elsa.Services this.workflowInstanceStore = workflowInstanceStore; this.workflowActivator = workflowActivator; this.expressionEvaluator = expressionEvaluator; - this.idGenerator = idGenerator; + this.clock = clock; this.mediator = mediator; this.serviceProvider = serviceProvider; this.logger = logger; @@ -237,6 +238,7 @@ namespace Elsa.Services WorkflowPersistenceBehavior persistenceBehavior = WorkflowPersistenceBehavior.WorkflowExecuted) => new WorkflowExecutionContext( expressionEvaluator, + clock, serviceProvider, workflowDefinitionId, workflowInstanceId, diff --git a/test/unit/Elsa.Core.UnitTests/Elsa.Core.UnitTests.csproj b/test/unit/Elsa.Core.UnitTests/Elsa.Core.UnitTests.csproj index d4d189357..74a6afd70 100644 --- a/test/unit/Elsa.Core.UnitTests/Elsa.Core.UnitTests.csproj +++ b/test/unit/Elsa.Core.UnitTests/Elsa.Core.UnitTests.csproj @@ -18,15 +18,15 @@ - - - - - Always + + + + + diff --git a/test/unit/Elsa.Core.UnitTests/WorkflowHostTests.cs b/test/unit/Elsa.Core.UnitTests/WorkflowHostTests.cs index 572410e96..ddbd17136 100644 --- a/test/unit/Elsa.Core.UnitTests/WorkflowHostTests.cs +++ b/test/unit/Elsa.Core.UnitTests/WorkflowHostTests.cs @@ -21,11 +21,12 @@ namespace Elsa.Core.UnitTests { public class WorkflowHostTests { + private readonly IFixture fixture; private readonly WorkflowHost workflowHost; public WorkflowHostTests() { - var fixture = new Fixture().Customize(new NodaTimeCustomization()); + fixture = new Fixture().Customize(new NodaTimeCustomization()); var workflowActivatorMock = new Mock(); var idGeneratorMock = new Mock(); var workflowRegistryMock = new Mock(); @@ -33,16 +34,20 @@ namespace Elsa.Core.UnitTests var workflowExpressionEvaluatorMock = new Mock(); var mediatorMock = new Mock(); var now = fixture.Create(); - var fakeClock = new FakeClock(now); + var clock = new FakeClock(now); var logger = new NullLogger(); var serviceProvider = new ServiceCollection().BuildServiceProvider(); + workflowActivatorMock + .Setup(x => x.ActivateAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .ReturnsAsync((Workflow workflow, string? correlationId, CancellationToken cancellationToken) => new WorkflowInstance()); + workflowHost = new WorkflowHost( workflowRegistryMock.Object, workflowInstanceStoreMock.Object, workflowActivatorMock.Object, workflowExpressionEvaluatorMock.Object, - idGeneratorMock.Object, + clock, mediatorMock.Object, serviceProvider, logger); @@ -51,7 +56,8 @@ namespace Elsa.Core.UnitTests [Fact(DisplayName = "Can run simple workflow to completed state.")] public async Task RunAsync01() { - var activity = CreateActivity(); + var activityExecutionResultMock = new Mock(); + var activity = CreateActivity(activityExecutionResult: activityExecutionResultMock.Object); var workflow = CreateWorkflow(activity); var executionContext = await workflowHost.RunWorkflowAsync(workflow); @@ -73,7 +79,10 @@ namespace Elsa.Core.UnitTests private IActivity CreateActivity(bool canExecute = true, IActivityExecutionResult? activityExecutionResult = null) { var activityMock = new Mock(); + var activityId = fixture.Create(); + activityMock.Setup(x => x.Id).Returns(activityId); + activityMock .Setup(x => x.CanExecuteAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(canExecute);