Enhance DeleteWorkflowTests: Verify deletion with workflow registry refresh and update function signature.
This commit is contained in:
parent
25bf377058
commit
cc3a2c2c06
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue