// Copyright (c) Microsoft. All rights reserved. using System.Threading.Tasks; using Microsoft.Agents.Workflows.Declarative.ObjectModel; using Microsoft.Bot.ObjectModel; using Microsoft.PowerFx.Types; using Xunit.Abstractions; namespace Microsoft.Agents.Workflows.Declarative.UnitTests.ObjectModel; /// /// Tests for . /// public sealed class ResetVariableExecutorTest(ITestOutputHelper output) : WorkflowActionExecutorTest(output) { [Fact] public async Task ResetDefinedValue() { // Arrange this.Scopes.Set("MyVar1", FormulaValue.New("Value #1")); this.Scopes.Set("MyVar2", FormulaValue.New("Value #2")); ResetVariable model = this.CreateModel( this.FormatDisplayName(nameof(ResetDefinedValue)), FormatVariablePath("MyVar1")); // Act ResetVariableExecutor action = new(model, this.GetState()); await this.Execute(action); // Assert this.VerifyModel(model, action); this.VerifyUndefined("MyVar1"); this.VerifyState("MyVar2", FormulaValue.New("Value #2")); } [Fact] public async Task ResetUndefinedValue() { // Arrange this.Scopes.Set("MyVar1", FormulaValue.New("Value #1")); ResetVariable model = this.CreateModel( this.FormatDisplayName(nameof(ResetUndefinedValue)), FormatVariablePath("NoVar")); // Act ResetVariableExecutor action = new(model, this.GetState()); await this.Execute(action); // Assert this.VerifyModel(model, action); this.VerifyUndefined("NoVar"); this.VerifyState("MyVar1", FormulaValue.New("Value #1")); } private ResetVariable CreateModel(string displayName, string variablePath) { ResetVariable.Builder actionBuilder = new() { Id = this.CreateActionId(), DisplayName = this.FormatDisplayName(displayName), Variable = InitializablePropertyPath.Create(variablePath), }; ResetVariable model = this.AssignParent(actionBuilder); return model; } }