MarketAlly.AIPlugin.Extensions/MarketAlly.AIPlugin.Tests/AIPluginResultTests.cs

85 lines
2.2 KiB
C#
Executable File

using MarketAlly.AIPlugin;
namespace MarketAlly.AIPlugin.Tests;
/// <summary>
/// Tests for AIPluginResult class
/// </summary>
public class AIPluginResultTests
{
[Fact]
public void Constructor_WithData_ShouldCreateSuccessResult()
{
// Arrange
var data = new { Value = "test" };
var message = "Success message";
// Act
var result = new AIPluginResult(data, message);
// Assert
result.Success.Should().BeTrue();
result.Data.Should().Be(data);
result.Message.Should().Be(message);
result.Error.Should().BeNull();
}
[Fact]
public void Constructor_WithDataOnly_ShouldCreateSuccessResultWithNullMessage()
{
// Arrange
var data = new { Value = "test" };
// Act
var result = new AIPluginResult(data);
// Assert
result.Success.Should().BeTrue();
result.Data.Should().Be(data);
result.Message.Should().BeNull();
result.Error.Should().BeNull();
}
[Fact]
public void Constructor_WithError_ShouldCreateFailureResult()
{
// Arrange
var exception = new InvalidOperationException("Test error");
var message = "Operation failed";
// Act
var result = new AIPluginResult(exception, message);
// Assert
result.Success.Should().BeFalse();
result.Error.Should().Be(exception);
result.Message.Should().Be(message);
result.Data.Should().BeNull();
}
[Fact]
public void Constructor_WithNullData_ShouldStillCreateSuccessResult()
{
// Arrange & Act
var result = new AIPluginResult(null, "Success with null data");
// Assert
result.Success.Should().BeTrue();
result.Data.Should().BeNull();
result.Message.Should().Be("Success with null data");
}
[Theory]
[InlineData("")]
[InlineData(null)]
public void Constructor_WithEmptyOrNullMessage_ShouldStillWork(string message)
{
// Arrange & Act
var result = new AIPluginResult(new { }, message);
// Assert
result.Success.Should().BeTrue();
result.Message.Should().Be(message);
}
}