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);
    }
}