Integrate improved workflow handling in bulk dispatch tests

Updated workflow creation and dispatching methods to streamline bulk dispatch tests. Modified signal triggering in `TriggerSignal` activity and upgraded `ElsaStudioVersion` for compatibility improvements. Removed unused imports for cleaner code structure.
This commit is contained in:
Sipke Schoorstra 2024-10-23 19:12:10 +02:00
parent 3208be7b89
commit 32bd3ddfea
5 changed files with 16 additions and 11 deletions

View file

@ -37,7 +37,7 @@
<NoWarn>$(NoWarn);IL2026;IL2046;IL2057;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091</NoWarn>
</PropertyGroup>
<PropertyGroup>
<ElsaStudioVersion>3.3.0-preview.470</ElsaStudioVersion>
<ElsaStudioVersion>3.3.0-preview.584</ElsaStudioVersion>
<SystemTextJsonVersion>8.0.5</SystemTextJsonVersion>
</PropertyGroup>
</Project>

View file

@ -2,6 +2,7 @@ using System.Runtime.CompilerServices;
using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Extensions;
using Elsa.Testing.Shared.Services;
using Elsa.Workflows.Memory;
using Elsa.Workflows.Models;
@ -48,7 +49,7 @@ public class TriggerSignal : CodeActivity
protected override void Execute(ActivityExecutionContext context)
{
var testEventManager = context.GetRequiredService<ISignalManager>();
var testEventManager = context.GetRequiredService<SignalManager>();
var eventName = EventName.Get(context);
testEventManager.Trigger(eventName);
}

View file

@ -24,7 +24,7 @@ public class BulkDispatchWorkflowsTests : AppComponentTest
_signalManager = Scope.ServiceProvider.GetRequiredService<SignalManager>();
_workflowEvents.WorkflowInstanceSaved += OnWorkflowInstanceSaved;
}
/// Dispatches and waits for child workflows to complete.
[Fact]
public async Task DispatchAndWaitWorkflow_ShouldWaitForChildWorkflowToComplete()
@ -36,17 +36,23 @@ public class BulkDispatchWorkflowsTests : AppComponentTest
});
await workflowClient.RunInstanceAsync(RunWorkflowInstanceRequest.Empty);
var parentWorkflowInstanceArgs = await _signalManager.WaitAsync<WorkflowInstanceSavedEventArgs>(GreetEmployeesWorkflowCompletedSignal);
Assert.Equal(WorkflowStatus.Finished, parentWorkflowInstanceArgs.WorkflowInstance.Status);
}
/// <summary>
/// Individual items are sent as input to child workflows.
/// </summary>
[Fact]
public async Task DispatchWorkflows_ChildWorkflowsShouldReceiveCurrentItem()
{
await _workflowRuntime.StartWorkflowAsync(MixFruitsWorkflow.DefinitionId);
var workflowClient = await _workflowRuntime.CreateClientAsync();
var request = new CreateAndRunWorkflowInstanceRequest
{
WorkflowDefinitionHandle = WorkflowDefinitionHandle.ByDefinitionId(MixFruitsWorkflow.DefinitionId, VersionOptions.Published)
};
await workflowClient.CreateAndRunInstanceAsync(request);
await _signalManager.WaitAsync("Apple");
await _signalManager.WaitAsync("Banana");
await _signalManager.WaitAsync("Cherry");
@ -54,10 +60,10 @@ public class BulkDispatchWorkflowsTests : AppComponentTest
private void OnWorkflowInstanceSaved(object? sender, WorkflowInstanceSavedEventArgs e)
{
if(e.WorkflowInstance.Status != WorkflowStatus.Finished)
if (e.WorkflowInstance.Status != WorkflowStatus.Finished)
return;
if(e.WorkflowInstance.DefinitionId == GreetEmployeesWorkflow.DefinitionId)
if (e.WorkflowInstance.DefinitionId == GreetEmployeesWorkflow.DefinitionId)
_signalManager.Trigger(GreetEmployeesWorkflowCompletedSignal, e);
}

View file

@ -1,7 +1,6 @@
using Elsa.Extensions;
using Elsa.Workflows.Activities;
using Elsa.Workflows.ComponentTests.Activities;
using Elsa.Workflows.Contracts;
using Hangfire.Annotations;
namespace Elsa.Workflows.ComponentTests.Scenarios.BulkDispatchWorkflows.Workflows;

View file

@ -1,5 +1,4 @@
using Elsa.Workflows.Activities;
using Elsa.Workflows.Contracts;
namespace Elsa.Workflows.ComponentTests.Scenarios.BulkDispatchWorkflows.Workflows;