From 25bf377058e48b498f60059c8de33429e5af3dff Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 30 Jan 2026 21:58:48 +0100 Subject: [PATCH] Refactor DeleteWorkflowTests: replace `WaitAsync` with `WaitForWorkflowTypeRemovedAsync`. Add helper method for improved readability and robustness. --- .../WorkflowActivities/DeleteWorkflowTests.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs index 2a13ec262..b59db45d3 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs @@ -36,8 +36,7 @@ public class DeleteWorkflowTests : AppComponentTest var workflowDefinitionManager = _scope1.ServiceProvider.GetRequiredService(); await workflowDefinitionManager.DeleteByDefinitionIdAsync(Workflows.DeleteWorkflow.DefinitionId); - // Wait for the event handler to process the deletion from the activity registry - await _signalManager.WaitAsync(WorkflowDeletedSignal, 5000); + await WaitForWorkflowTypeRemovedAsync(_scope1, Workflows.DeleteWorkflow.Type, TimeSpan.FromSeconds(5)); WorkflowTypeDeletedFromRegistry(_scope1, Workflows.DeleteWorkflow.Type); } @@ -74,6 +73,20 @@ public class DeleteWorkflowTests : AppComponentTest Assert.Null(descriptor); } + private static async Task WaitForWorkflowTypeRemovedAsync(IServiceScope scope, string type, TimeSpan timeout) + { + var activityRegistry = scope.ServiceProvider.GetRequiredService(); + var deadline = DateTimeOffset.UtcNow + timeout; + + while (DateTimeOffset.UtcNow < deadline) + { + if (activityRegistry.Find(type) == null) + return; + + await Task.Delay(100); + } + } + private void OnWorkflowDefinitionDeleted(object? sender, WorkflowDefinitionDeletedEventArgs args) { if (args.DefinitionId == Workflows.DeleteWorkflow.DefinitionId)