elsa-core/test/unit/Elsa.Activities.UnitTests/Primitives/NotFoundActivityTests.cs
Sipke Schoorstra 02f53c3ef2
Add unit tests for NotFoundActivity to validate exception behavior (#7115)
- Introduced `NotFoundActivityTests` to cover scenarios of missing activity types and versions.
- Added tests to assert `ActivityNotFoundException` handling and inclusion of type name and version in exception messages.
2025-11-27 20:52:07 +01:00

70 lines
2.4 KiB
C#

using Elsa.Testing.Shared;
using Elsa.Workflows;
using Elsa.Workflows.Exceptions;
namespace Elsa.Activities.UnitTests.Primitives;
public class NotFoundActivityTests
{
[Fact(DisplayName = "NotFoundActivity throws ActivityNotFoundException")]
public async Task Should_Throw_ActivityNotFoundException()
{
// Arrange
const string typeName = "MyMissingActivity";
// Act & Assert
var exception = await ExecuteAndAssertExceptionAsync(typeName);
Assert.Equal(typeName, exception.MissingTypeName);
}
[Fact(DisplayName = "NotFoundActivity includes type name in exception")]
public async Task Should_Include_TypeName_In_Exception()
{
// Arrange
const string typeName = "Custom.Namespace.MyActivity";
// Act & Assert
var exception = await ExecuteAndAssertExceptionAsync(typeName);
Assert.Contains(typeName, exception.Message);
}
[Fact(DisplayName = "NotFoundActivity includes version in exception")]
public async Task Should_Include_Version_In_Exception()
{
// Arrange
const string typeName = "MyMissingActivity";
const int version = 2;
// Act & Assert
var exception = await ExecuteAndAssertExceptionAsync(typeName, version);
Assert.Equal(version, exception.MissingTypeVersion);
Assert.Contains(version.ToString(), exception.Message);
}
[Theory(DisplayName = "NotFoundActivity preserves various type names")]
[InlineData("SimpleActivity")]
[InlineData("Namespace.Activity")]
[InlineData("My.Custom.Namespace.ComplexActivity")]
[InlineData("Activity123")]
public async Task Should_Preserve_Various_TypeNames(string typeName)
{
// Act & Assert
var exception = await ExecuteAndAssertExceptionAsync(typeName);
Assert.Equal(typeName, exception.MissingTypeName);
}
private static async Task<ActivityNotFoundException> ExecuteAndAssertExceptionAsync(string typeName, int version = 0)
{
var notFoundActivity = new NotFoundActivity(typeName, null, null)
{
MissingTypeVersion = version
};
return await Assert.ThrowsAsync<ActivityNotFoundException>(() => ExecuteAsync(notFoundActivity));
}
private static async Task<ActivityExecutionContext> ExecuteAsync(IActivity activity)
{
return await new ActivityTestFixture(activity).ExecuteAsync();
}
}