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 +}