| File: Contents\ErrorContentTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\Microsoft.Extensions.AI.Abstractions.Tests.csproj (Microsoft.Extensions.AI.Abstractions.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json; using Xunit; namespace Microsoft.Extensions.AI; public class ErrorContentTests { [Fact] public void Constructor_NormalizesNullToEmpty() { ErrorContent content = new(null!); Assert.Empty(content.Message); content.Message = "test"; Assert.Equal("test", content.Message); content.Message = null!; Assert.Empty(content.Message); } [Fact] public void Constructor_ShouldInitializeProperties() { // Arrange string errorMessage = "Error occurred"; string errorCode = "ERR001"; string errorDetails = "Something went wrong"; // Act var errorContent = new ErrorContent(errorMessage) { ErrorCode = errorCode, Details = errorDetails }; // Assert Assert.Equal(errorMessage, errorContent.Message); Assert.Equal(errorCode, errorContent.ErrorCode); Assert.Equal(errorDetails, errorContent.Details); } [Fact] public void JsonSerialization_ShouldSerializeAndDeserializeCorrectly() { // Arrange var errorContent = new ErrorContent("Error occurred") { ErrorCode = "ERR001", Details = "Something went wrong" }; JsonSerializerOptions options = new(AIJsonUtilities.DefaultOptions) { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; // Act var json = JsonSerializer.Serialize(errorContent, options); var deserializedErrorContent = JsonSerializer.Deserialize<ErrorContent>(json, options); // Assert Assert.NotNull(deserializedErrorContent); Assert.Equal(errorContent.Message, deserializedErrorContent!.Message); Assert.Equal(errorContent.ErrorCode, deserializedErrorContent.ErrorCode); Assert.Equal(errorContent.Details, deserializedErrorContent.Details); } }