diff --git a/test/unit/Elsa.Activities.UnitTests/Primitives/SetNameTests.cs b/test/unit/Elsa.Activities.UnitTests/Primitives/SetNameTests.cs new file mode 100644 index 000000000..b6247700c --- /dev/null +++ b/test/unit/Elsa.Activities.UnitTests/Primitives/SetNameTests.cs @@ -0,0 +1,56 @@ +using Elsa.Testing.Shared; +using Elsa.Workflows; + +namespace Elsa.Activities.UnitTests.Primitives; + +public class SetNameTests +{ + [Fact(DisplayName = "SetName sets workflow name and completes successfully")] + public async Task Should_Set_Workflow_Name_And_Complete() + { + // Arrange + const string name = "My Workflow"; + + // Act + var context = await ExecuteAsync(name); + + // Assert + Assert.Equal(name, context.WorkflowExecutionContext.Name); + Assert.Equal(ActivityStatus.Completed, context.Status); + } + + [Theory(DisplayName = "SetName handles various name values")] + [InlineData("Simple Name")] + [InlineData("Name-With-Dashes")] + [InlineData("Name_With_Underscores")] + [InlineData("Name.With.Dots")] + [InlineData("123 Numeric Name")] + [InlineData("")] + public async Task Should_Handle_Various_Name_Values(string name) + { + // Act + var context = await ExecuteAsync(name); + + // Assert + Assert.Equal(name, context.WorkflowExecutionContext.Name); + } + + [Fact(DisplayName = "SetName handles null value")] + public async Task Should_Handle_Null_Value() + { + // Act + var context = await ExecuteAsync(null!); + + // Assert + Assert.Null(context.WorkflowExecutionContext.Name); + } + + private static async Task ExecuteAsync(string name) + { + var setName = new SetName + { + Value = new(name) + }; + return await new ActivityTestFixture(setName).ExecuteAsync(); + } +}