diff --git a/test/integration/Elsa.IntegrationTests/Elsa.IntegrationTests.csproj b/test/integration/Elsa.IntegrationTests/Elsa.IntegrationTests.csproj index 74a2c208e..c2b5fedbd 100644 --- a/test/integration/Elsa.IntegrationTests/Elsa.IntegrationTests.csproj +++ b/test/integration/Elsa.IntegrationTests/Elsa.IntegrationTests.csproj @@ -130,6 +130,7 @@ + diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs index bc41ff057..437f414e0 100644 --- a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariables/Tests.cs @@ -12,12 +12,11 @@ public class Tests { private readonly IWorkflowRunner _workflowRunner; private readonly CapturingTextWriter _capturingTextWriter = new(); - private readonly IWorkflowBuilderFactory _workflowBuilderFactory; public Tests(ITestOutputHelper testOutputHelper) { var services = new TestApplicationBuilder(testOutputHelper).WithCapturingTextWriter(_capturingTextWriter).Build(); - _workflowBuilderFactory = services.GetRequiredService(); + services.GetRequiredService(); _workflowRunner = services.GetRequiredService(); } diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/CreateVariableActivity.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/CreateVariableActivity.cs new file mode 100644 index 000000000..d76716ffd --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/CreateVariableActivity.cs @@ -0,0 +1,12 @@ +using Elsa.Extensions; +using Elsa.Workflows.Core; + +namespace Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Activities; + +public class CreateVariableActivity : CodeActivity +{ + protected override void Execute(ActivityExecutionContext context) + { + context.SetVariable("Foo", "Bar"); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/ReadVariableActivity.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/ReadVariableActivity.cs new file mode 100644 index 000000000..0b5915b50 --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Activities/ReadVariableActivity.cs @@ -0,0 +1,13 @@ +using Elsa.Extensions; +using Elsa.Workflows.Core; + +namespace Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Activities; + +public class ReadVariableActivity : CodeActivity +{ + protected override void Execute(ActivityExecutionContext context) + { + var foo = context.GetVariable("Foo"); + Result.Set(context, foo); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs new file mode 100644 index 000000000..60a4290db --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Tests.cs @@ -0,0 +1,31 @@ +using System.Linq; +using System.Threading.Tasks; +using Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Workflows; +using Elsa.Testing.Shared; +using Elsa.Workflows.Core.Contracts; +using Microsoft.Extensions.DependencyInjection; +using Xunit; +using Xunit.Abstractions; + +namespace Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities; + +public class Tests +{ + private readonly IWorkflowRunner _workflowRunner; + private readonly CapturingTextWriter _capturingTextWriter = new(); + + public Tests(ITestOutputHelper testOutputHelper) + { + var services = new TestApplicationBuilder(testOutputHelper).WithCapturingTextWriter(_capturingTextWriter).Build(); + services.GetRequiredService(); + _workflowRunner = services.GetRequiredService(); + } + + [Fact(DisplayName = "Activities can set and get variables internally")] + public async Task Test1() + { + await _workflowRunner.RunAsync(); + var lines = _capturingTextWriter.Lines.ToList(); + Assert.Equal(new[] { "Bar" }, lines); + } +} \ No newline at end of file diff --git a/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Workflows/SampleWorkflow.cs b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Workflows/SampleWorkflow.cs new file mode 100644 index 000000000..9c4a738d2 --- /dev/null +++ b/test/integration/Elsa.IntegrationTests/Scenarios/SetGetVariablesFromActivities/Workflows/SampleWorkflow.cs @@ -0,0 +1,33 @@ +using Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Activities; +using Elsa.Workflows.Core; +using Elsa.Workflows.Core.Activities; +using Elsa.Workflows.Core.Contracts; +using Elsa.Workflows.Core.Memory; + +namespace Elsa.IntegrationTests.Scenarios.SetGetVariablesFromActivities.Workflows; + +class SampleWorkflow : WorkflowBase +{ + protected override void Build(IWorkflowBuilder workflow) + { + var variable1 = new Variable(); + + workflow.Root = new Sequence + { + Variables = + { + variable1 + }, + + Activities = + { + new CreateVariableActivity(), + new ReadVariableActivity + { + Result = new(variable1) + }, + new WriteLine(variable1) + } + }; + } +} \ No newline at end of file