Add project files.

This commit is contained in:
2025-08-18 17:11:43 +03:30
parent 807dc263be
commit e5eb10d604
3943 changed files with 223719 additions and 0 deletions
@@ -0,0 +1,38 @@
using Elsa.Extensions;
using Elsa.Testing.Shared;
using Microsoft.Extensions.DependencyInjection;
using Xunit.Abstractions;
namespace Elsa.Workflows.IntegrationTests.Scenarios.CompositesPassingData;
public class Tests
{
private readonly IWorkflowRunner _workflowRunner;
private readonly CapturingTextWriter _capturingTextWriter = new();
private readonly IWorkflowBuilderFactory _workflowBuilderFactory;
private readonly IServiceProvider _services;
public Tests(ITestOutputHelper testOutputHelper)
{
_services = new TestApplicationBuilder(testOutputHelper)
.WithCapturingTextWriter(_capturingTextWriter)
.ConfigureElsa(elsa => elsa.UseJavaScript())
.Build();
_workflowBuilderFactory = _services.GetRequiredService<IWorkflowBuilderFactory>();
_workflowRunner = _services.GetRequiredService<IWorkflowRunner>();
}
[Fact(DisplayName = "The main workflow can capture the result of the composite activity")]
public async Task Test1()
{
await _services.PopulateRegistriesAsync();
var workflow = await _workflowBuilderFactory.CreateBuilder().BuildWorkflowAsync<AddTextMainWorkflow>();
// Start workflow.
await _workflowRunner.RunAsync(workflow);
// Verify expected output.
var line = _capturingTextWriter.Lines.ToList().Last();
Assert.Equal("hi there obi wan", line);
}
}
@@ -0,0 +1,61 @@
using Elsa.Extensions;
using Elsa.Workflows.Activities;
using Elsa.Workflows.Management.Activities.SetOutput;
using Elsa.Workflows.Memory;
using Elsa.Workflows.Models;
namespace Elsa.Workflows.IntegrationTests.Scenarios.CompositesPassingData;
/// <summary>
/// A composite activity that adds text to a string
/// </summary>
public class AddTextSubWorkflow : Composite
{
public Input<string> A { get; set; } = default!;
public Output<string> B { get; set; } = default!;
public AddTextSubWorkflow()
{
var setOutput = new SetOutput()
{
OutputName = new Input<string>("B"),
OutputValue = new Input<object?>(context => "hi there " + A.Get(context))
};
Root = new Sequence
{
Activities =
{
setOutput
}
};
}
}
/// <summary>
/// A workflow that uses the <see cref="AddTextSubWorkflow"/> composite activity.
/// </summary>
public class AddTextMainWorkflow : WorkflowBase
{
protected override void Build(IWorkflowBuilder workflow)
{
var outVariable = new Variable<string>("out", "test");
var subWorkflow = new AddTextSubWorkflow()
{
A = new("obi wan"),
B = new (outVariable)
};
workflow.Variables.Add(outVariable);
workflow.Root = new Sequence
{
Activities =
{
subWorkflow,
new WriteLine(context => outVariable.Get(context))
}
};
}
}