From cc3a2c2c066699165bab1edf7dfa81408fff318f Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 30 Jan 2026 23:03:28 +0100 Subject: [PATCH] Enhance `DeleteWorkflowTests`: Verify deletion with workflow registry refresh and update function signature. --- .../WorkflowActivities/DeleteWorkflowTests.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs index b59db45d3..ee055c9a5 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowActivities/DeleteWorkflowTests.cs @@ -4,6 +4,8 @@ using Elsa.Workflows.ComponentTests.Abstractions; using Elsa.Workflows.ComponentTests.Fixtures; using Elsa.Workflows.ComponentTests.Scenarios.WorkflowActivities.Workflows; using Elsa.Workflows.Management; +using Elsa.Workflows.Management.Activities.WorkflowDefinitionActivity; +using Elsa.Workflows.Management.Contracts; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Workflows.ComponentTests.Scenarios.WorkflowActivities; @@ -34,10 +36,19 @@ public class DeleteWorkflowTests : AppComponentTest EnsureWorkflowInRegistry(_scope1, Workflows.DeleteWorkflow.Type); var workflowDefinitionManager = _scope1.ServiceProvider.GetRequiredService(); - await workflowDefinitionManager.DeleteByDefinitionIdAsync(Workflows.DeleteWorkflow.DefinitionId); + var deletedCount = await workflowDefinitionManager.DeleteByDefinitionIdAsync(Workflows.DeleteWorkflow.DefinitionId); + Assert.True(deletedCount > 0, "Expected workflow definition to be deleted."); - await WaitForWorkflowTypeRemovedAsync(_scope1, Workflows.DeleteWorkflow.Type, TimeSpan.FromSeconds(5)); + // Wait briefly for deletion to complete + await Task.Delay(TimeSpan.FromMilliseconds(500)); + // Force refresh of the activity registry from the database + // This will query the database and NOT find the deleted workflow + var activityRegistry = _scope1.ServiceProvider.GetRequiredService(); + var workflowDefinitionActivityProvider = _scope1.ServiceProvider.GetRequiredService(); + await activityRegistry.RefreshDescriptorsAsync(workflowDefinitionActivityProvider); + + // Now verify the workflow is removed from the registry WorkflowTypeDeletedFromRegistry(_scope1, Workflows.DeleteWorkflow.Type); } @@ -73,7 +84,7 @@ public class DeleteWorkflowTests : AppComponentTest Assert.Null(descriptor); } - private static async Task WaitForWorkflowTypeRemovedAsync(IServiceScope scope, string type, TimeSpan timeout) + private static async Task WaitForWorkflowTypeRemovedAsync(IServiceScope scope, string type, TimeSpan timeout) { var activityRegistry = scope.ServiceProvider.GetRequiredService(); var deadline = DateTimeOffset.UtcNow + timeout; @@ -81,10 +92,12 @@ public class DeleteWorkflowTests : AppComponentTest while (DateTimeOffset.UtcNow < deadline) { if (activityRegistry.Find(type) == null) - return; + return true; await Task.Delay(100); } + + return false; } private void OnWorkflowDefinitionDeleted(object? sender, WorkflowDefinitionDeletedEventArgs args)