From da4498398ea965e06f4959fec888c4c47cb6f260 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 31 May 2026 12:45:03 +0200 Subject: [PATCH] Clear manual activity descriptors --- .../Services/ActivityRegistry.cs | 1 + .../Services/ActivityRegistryTests.cs | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs b/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs index 9e52e5721..7d732833f 100644 --- a/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs +++ b/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs @@ -265,6 +265,7 @@ public class ActivityRegistry(IActivityDescriber activityDescriber, IEnumerable< /// public void Clear() { + _manualActivityDescriptors.Clear(); _tenantRegistries.Clear(); _agnosticRegistry.ActivityDescriptors.Clear(); _agnosticRegistry.LatestActivityDescriptors.Clear(); diff --git a/test/unit/Elsa.Workflows.Core.UnitTests/Services/ActivityRegistryTests.cs b/test/unit/Elsa.Workflows.Core.UnitTests/Services/ActivityRegistryTests.cs index 53abb9e50..11f2039f1 100644 --- a/test/unit/Elsa.Workflows.Core.UnitTests/Services/ActivityRegistryTests.cs +++ b/test/unit/Elsa.Workflows.Core.UnitTests/Services/ActivityRegistryTests.cs @@ -13,15 +13,16 @@ public class ActivityRegistryTests private const string TestActivityType = "TestActivity"; private const string CurrentTenant = "tenant1"; + private readonly IActivityDescriber _activityDescriber; private readonly ILogger _logger; private readonly ActivityRegistry _registry; public ActivityRegistryTests() { var tenantAccessor = Substitute.For(); - var activityDescriber = Substitute.For(); + _activityDescriber = Substitute.For(); _logger = Substitute.For>(); - _registry = new(activityDescriber, [], tenantAccessor, _logger); + _registry = new(_activityDescriber, [], tenantAccessor, _logger); // Set default tenant for all tests tenantAccessor.TenantId.Returns(CurrentTenant); @@ -196,6 +197,25 @@ public class ActivityRegistryTests Assert.Null(result); } + [Fact] + public async Task GetDescriptorsAsync_ReturnsEmpty_WhenRegistryCleared() + { + // Arrange + _activityDescriber.DescribeActivityAsync(typeof(ActivityRegistryTests), Arg.Any()) + .Returns(Task.FromResult(CreateDescriptor(TestActivityType, 1, CurrentTenant))); + + await _registry.RegisterAsync(typeof(ActivityRegistryTests), CancellationToken.None); + + // Act + _registry.Clear(); + var descriptors = await _registry.GetDescriptorsAsync(); + + // Assert + Assert.Empty(descriptors); + Assert.Empty(_registry.ListAll()); + Assert.Null(_registry.Find(TestActivityType)); + } + [Fact] public void Find_IgnoresOtherTenantDescriptors_OnlyReturnsCurrentTenantOrAgnostic() { @@ -444,4 +464,4 @@ public class ActivityRegistryTests public ValueTask> GetDescriptorsAsync(CancellationToken cancellationToken = default) => new(Descriptors); } -} \ No newline at end of file +}