using MarketAlly.AIPlugin; namespace MarketAlly.AIPlugin.Tests; /// /// Tests for AIPluginResult class /// 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); } }