// Copyright (c) Microsoft. All rights reserved. using System; using System.Text.Json; using Moq; namespace Microsoft.Agents.AI.UnitTests; /// /// Unit tests for the class. /// public class ToolApprovalAgentBuilderExtensionsTests { /// /// Verify that UseToolApproval throws ArgumentNullException when builder is null. /// [Fact] public void UseToolApproval_WithNullBuilder_ThrowsArgumentNullException() { // Act & Assert Assert.Throws("builder", () => ((AIAgentBuilder)null!).UseToolApproval()); } /// /// Verify that UseToolApproval returns a ToolApprovalAgent. /// [Fact] public void UseToolApproval_WithValidBuilder_ReturnsToolApprovalAgent() { // Arrange var mockAgent = new Mock(); var builder = new AIAgentBuilder(mockAgent.Object); // Act var result = builder.UseToolApproval().Build(); // Assert Assert.IsType(result); } /// /// Verify that UseToolApproval returns the same builder instance for chaining. /// [Fact] public void UseToolApproval_ReturnsBuilderForChaining() { // Arrange var mockAgent = new Mock(); var builder = new AIAgentBuilder(mockAgent.Object); // Act var result = builder.UseToolApproval(); // Assert Assert.Same(builder, result); } /// /// Verify that UseToolApproval with custom JsonSerializerOptions works correctly. /// [Fact] public void UseToolApproval_WithCustomJsonSerializerOptions_ReturnsToolApprovalAgent() { // Arrange var mockAgent = new Mock(); var builder = new AIAgentBuilder(mockAgent.Object); var options = new JsonSerializerOptions(); // Act var result = builder.UseToolApproval(jsonSerializerOptions: options).Build(); // Assert Assert.IsType(result); } }