// Copyright (c) Microsoft. All rights reserved. using System; using Microsoft.Extensions.Hosting; namespace Microsoft.Agents.AI.Hosting.OpenAI.UnitTests; /// /// Tests for HostApplicationBuilderExtensions.AddOpenAIResponses method. /// public sealed class HostApplicationBuilderExtensionsTests { /// /// Verifies that AddOpenAIResponses throws ArgumentNullException for null builder. /// [Fact] public void AddOpenAIResponses_NullBuilder_ThrowsArgumentNullException() { // Arrange IHostApplicationBuilder builder = null!; // Act & Assert ArgumentNullException exception = Assert.Throws(() => builder.AddOpenAIResponses()); Assert.Equal("builder", exception.ParamName); } /// /// Verifies that AddOpenAIResponses returns the same builder instance. /// [Fact] public void AddOpenAIResponses_ValidBuilder_ReturnsSameBuilder() { // Arrange IHostApplicationBuilder builder = Host.CreateApplicationBuilder(); // Act IHostApplicationBuilder result = builder.AddOpenAIResponses(); // Assert Assert.Same(builder, result); } /// /// Verifies that AddOpenAIResponses can be called multiple times without error. /// [Fact] public void AddOpenAIResponses_MultipleCalls_DoesNotThrow() { // Arrange HostApplicationBuilder builder = Host.CreateApplicationBuilder(); // Act builder.AddOpenAIResponses(); builder.AddOpenAIResponses(); builder.AddOpenAIResponses(); // Assert - Building should succeed Assert.NotNull(builder.Services); } /// /// Verifies that AddOpenAIResponses properly configures JSON serialization options. /// [Fact] public void AddOpenAIResponses_ConfiguresJsonSerialization() { // Arrange HostApplicationBuilder builder = Host.CreateApplicationBuilder(); // Act builder.AddOpenAIResponses(); // Assert - Should add services without error Assert.NotNull(builder.Services); } }