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