// Copyright (c) Microsoft. All rights reserved. using Microsoft.Agents.AI.DurableTask.Workflows; namespace Microsoft.Agents.AI.DurableTask.UnitTests.Workflows; public sealed class WorkflowNamingHelperTests { [Fact] public void ToOrchestrationFunctionName_ValidWorkflowName_ReturnsPrefixedName() { string result = WorkflowNamingHelper.ToOrchestrationFunctionName("MyWorkflow"); Assert.Equal("dafx-MyWorkflow", result); } [Theory] [InlineData(null)] [InlineData("")] public void ToOrchestrationFunctionName_NullOrEmpty_ThrowsArgumentException(string? workflowName) { Assert.ThrowsAny(() => WorkflowNamingHelper.ToOrchestrationFunctionName(workflowName!)); } [Fact] public void ToWorkflowName_ValidOrchestrationFunctionName_ReturnsWorkflowName() { string result = WorkflowNamingHelper.ToWorkflowName("dafx-MyWorkflow"); Assert.Equal("MyWorkflow", result); } [Theory] [InlineData(null)] [InlineData("")] public void ToWorkflowName_NullOrEmpty_ThrowsArgumentException(string? orchestrationFunctionName) { Assert.ThrowsAny(() => WorkflowNamingHelper.ToWorkflowName(orchestrationFunctionName!)); } [Theory] [InlineData("MyWorkflow")] [InlineData("invalid-prefix-MyWorkflow")] [InlineData("dafx")] [InlineData("dafx-")] public void ToWorkflowName_InvalidOrMissingPrefix_ThrowsArgumentException(string orchestrationFunctionName) { Assert.Throws(() => WorkflowNamingHelper.ToWorkflowName(orchestrationFunctionName)); } [Fact] public void GetExecutorName_SimpleExecutorId_ReturnsSameName() { string result = WorkflowNamingHelper.GetExecutorName("OrderParser"); Assert.Equal("OrderParser", result); } [Fact] public void GetExecutorName_ExecutorIdWithGuidSuffix_ReturnsNameWithoutSuffix() { string result = WorkflowNamingHelper.GetExecutorName("Physicist_8884e71021334ce49517fa2b17b1695b"); Assert.Equal("Physicist", result); } [Fact] public void GetExecutorName_NameWithUnderscoresAndGuidSuffix_ReturnsFullName() { string result = WorkflowNamingHelper.GetExecutorName("my_agent_8884e71021334ce49517fa2b17b1695b"); Assert.Equal("my_agent", result); } [Fact] public void GetExecutorName_NameWithUnderscoreButNoGuidSuffix_ReturnsSameName() { string result = WorkflowNamingHelper.GetExecutorName("my_custom_executor"); Assert.Equal("my_custom_executor", result); } [Theory] [InlineData(null)] [InlineData("")] public void GetExecutorName_NullOrEmpty_ThrowsArgumentException(string? executorId) { Assert.ThrowsAny(() => WorkflowNamingHelper.GetExecutorName(executorId!)); } }