// Copyright (c) Microsoft. All rights reserved. using System.Threading.Tasks; using Microsoft.Agents.AI.Workflows.Declarative.ObjectModel; using Microsoft.Agents.ObjectModel; using Microsoft.PowerFx.Types; namespace Microsoft.Agents.AI.Workflows.Declarative.UnitTests.ObjectModel; /// /// Tests for . /// public sealed class SetTextVariableExecutorTest(ITestOutputHelper output) : WorkflowActionExecutorTest(output) { [Fact] public async Task SetLiteralValueAsync() { // Arrange, Act & Assert await this.ExecuteTestAsync( this.FormatDisplayName(nameof(SetLiteralValueAsync)), "TextVar", "New value"); } [Fact] public async Task UpdateExistingValueAsync() { // Arrange this.State.Set("TextVar", FormulaValue.New("Old value")); // Act & Assert await this.ExecuteTestAsync( this.FormatDisplayName(nameof(UpdateExistingValueAsync)), "TextVar", "New value"); } private async Task ExecuteTestAsync( string displayName, string variableName, string textValue) { // Arrange SetTextVariable model = this.CreateModel( displayName, variableName, textValue); // Act SetTextVariableExecutor action = new(model, this.State); await this.ExecuteAsync(action); // Assert VerifyModel(model, action); this.VerifyState(variableName, FormulaValue.New(textValue)); } private SetTextVariable CreateModel(string displayName, string variablePath, string textValue) { SetTextVariable.Builder actionBuilder = new() { Id = this.CreateActionId(), DisplayName = this.FormatDisplayName(displayName), Variable = PropertyPath.Create(FormatVariablePath(variablePath)), Value = TemplateLine.Parse(textValue), }; return AssignParent(actionBuilder); } }