Refactor DeleteWorkflowTests: replace WaitAsync with WaitForWorkflowTypeRemovedAsync. Add helper method for improved readability and robustness.

This commit is contained in:
Sipke Schoorstra 2026-01-30 21:58:48 +01:00
parent 641dd664d6
commit 25bf377058
No known key found for this signature in database
GPG key ID: 5C10502B28A4268F

View file

@ -36,8 +36,7 @@ public class DeleteWorkflowTests : AppComponentTest
var workflowDefinitionManager = _scope1.ServiceProvider.GetRequiredService<IWorkflowDefinitionManager>();
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<IActivityRegistry>();
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)