Enhance DeleteWorkflowTests: Verify deletion with workflow registry refresh and update function signature.

This commit is contained in:
Sipke Schoorstra 2026-01-30 23:03:28 +01:00
parent 25bf377058
commit cc3a2c2c06
No known key found for this signature in database
GPG key ID: 5C10502B28A4268F

View file

@ -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<IWorkflowDefinitionManager>();
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<IActivityRegistry>();
var workflowDefinitionActivityProvider = _scope1.ServiceProvider.GetRequiredService<WorkflowDefinitionActivityProvider>();
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<bool> WaitForWorkflowTypeRemovedAsync(IServiceScope scope, string type, TimeSpan timeout)
{
var activityRegistry = scope.ServiceProvider.GetRequiredService<IActivityRegistry>();
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)