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,16 @@
using Elsa.Extensions;
using Elsa.JavaScript.Activities;
namespace Elsa.Workflows.ComponentTests.Scenarios.JavaScriptVariables;
public class JavaScriptVariablesWorkflow1 : WorkflowBase
{
public static readonly string DefinitionId = Guid.NewGuid().ToString();
protected override void Build(IWorkflowBuilder builder)
{
builder.WithDefinitionId(DefinitionId);
builder.WithVariable("MagicNumber", 3).WithWorkflowStorage();
builder.Root = new RunJavaScript("setMagicNumber(42)", null, null);
}
}
@@ -0,0 +1,16 @@
using Elsa.Extensions;
using Elsa.JavaScript.Activities;
namespace Elsa.Workflows.ComponentTests.Scenarios.JavaScriptVariables;
public class JavaScriptVariablesWorkflow2 : WorkflowBase
{
public static readonly string DefinitionId = Guid.NewGuid().ToString();
protected override void Build(IWorkflowBuilder builder)
{
builder.WithDefinitionId(DefinitionId);
builder.WithVariable("MagicNumber", 3).WithWorkflowStorage();
builder.Root = new RunJavaScript("variables.MagicNumber = 42", null, null);
}
}
@@ -0,0 +1,16 @@
using Elsa.Extensions;
using Elsa.JavaScript.Activities;
namespace Elsa.Workflows.ComponentTests.Scenarios.JavaScriptVariables;
public class JavaScriptVariablesWorkflow3 : WorkflowBase
{
public static readonly string DefinitionId = Guid.NewGuid().ToString();
protected override void Build(IWorkflowBuilder builder)
{
builder.WithDefinitionId(DefinitionId);
builder.WithVariable("MagicNumber", 3).WithWorkflowStorage();
builder.Root = new RunJavaScript("setVariable('MagicNumber', 42)", null, null);
}
}
@@ -0,0 +1,51 @@
using Elsa.Expressions.Helpers;
using Elsa.Extensions;
using Elsa.Workflows.ComponentTests.Abstractions;
using Elsa.Workflows.ComponentTests.Fixtures;
using Elsa.Workflows.Management;
using Elsa.Workflows.Models;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Messages;
using Elsa.Workflows.State;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Workflows.ComponentTests.Scenarios.JavaScriptVariables;
public class JavaScriptVariablesWorkflowTests(App app) : AppComponentTest(app)
{
[Theory(DisplayName = "SetVariable JS function sets a variable and does not get overridden by variables API")]
[MemberData(nameof(GetWorkflowDefinitions))]
public async Task SetVariableRetainsValue(string workflowDefinitionId)
{
var workflowRuntime = Scope.ServiceProvider.GetRequiredService<IWorkflowRuntime>();
var workflowInstanceStore = Scope.ServiceProvider.GetRequiredService<IWorkflowInstanceStore>();
var workflowClient = await workflowRuntime.CreateClientAsync();
var runAndCreateRequest = new CreateAndRunWorkflowInstanceRequest
{
WorkflowDefinitionHandle = WorkflowDefinitionHandle.ByDefinitionId(workflowDefinitionId)
};
var runResponse = await workflowClient.CreateAndRunInstanceAsync(runAndCreateRequest);
var workflowInstanceId = runResponse.WorkflowInstanceId;
var workflowInstance = await workflowInstanceStore.FindAsync(workflowInstanceId);
var workflowState = workflowInstance!.WorkflowState;
var rootWorkflowActivityExecutionContext = workflowState.ActivityExecutionContexts.Single(x => x.ParentContextId == null);
var variables = GetVariablesDictionary(rootWorkflowActivityExecutionContext);
var magicNumber = variables["magicNumberVariable"].ConvertTo<int>();
Assert.Equal(42, magicNumber);
}
public static IEnumerable<object[]> GetWorkflowDefinitions()
{
return
[
[JavaScriptVariablesWorkflow1.DefinitionId],
[JavaScriptVariablesWorkflow2.DefinitionId],
[JavaScriptVariablesWorkflow3.DefinitionId]
];
}
private VariablesDictionary GetVariablesDictionary(ActivityExecutionContextState context)
{
return context.Properties.GetOrAdd(WorkflowInstanceStorageDriver.VariablesDictionaryStateKey, () => new VariablesDictionary());
}
}