maksit-core/src/MaksIT.Core.Tests/Extensions/ExceptionExtensionsTests.cs

81 lines
2.2 KiB
C#

namespace MaksIT.Core.Tests.Extensions;
using MaksIT.Core.Extensions;
public class ExceptionExtensionsTests {
[Fact]
public void ExtractMessages_SingleException_ReturnsSingleMessage() {
// Arrange
var exception = new InvalidOperationException("Test message");
// Act
var messages = exception.ExtractMessages();
// Assert
Assert.Single(messages);
Assert.Equal("Test message", messages[0]);
}
[Fact]
public void ExtractMessages_WithInnerException_ReturnsAllMessages() {
// Arrange
var innerException = new ArgumentException("Inner message");
var outerException = new InvalidOperationException("Outer message", innerException);
// Act
var messages = outerException.ExtractMessages();
// Assert
Assert.Equal(2, messages.Count);
Assert.Equal("Outer message", messages[0]);
Assert.Equal("Inner message", messages[1]);
}
[Fact]
public void ExtractMessages_WithMultipleNestedExceptions_ReturnsAllMessages() {
// Arrange
var innermost = new ArgumentNullException("param", "Innermost message");
var middle = new ArgumentException("Middle message", innermost);
var outer = new InvalidOperationException("Outer message", middle);
// Act
var messages = outer.ExtractMessages();
// Assert
Assert.Equal(3, messages.Count);
Assert.Equal("Outer message", messages[0]);
Assert.Equal("Middle message", messages[1]);
Assert.Contains("Innermost message", messages[2]);
}
[Fact]
public void ExtractMessages_AggregateException_ReturnsOuterMessage() {
// Arrange
var inner1 = new InvalidOperationException("Error 1");
var inner2 = new ArgumentException("Error 2");
var aggregate = new AggregateException("Multiple errors", inner1, inner2);
// Act
var messages = aggregate.ExtractMessages();
// Assert
// AggregateException's InnerException is the first inner exception
Assert.Equal(2, messages.Count);
Assert.Contains("Multiple errors", messages[0]);
}
[Fact]
public void ExtractMessages_EmptyMessage_ReturnsEmptyString() {
// Arrange
var exception = new Exception("");
// Act
var messages = exception.ExtractMessages();
// Assert
Assert.Single(messages);
Assert.Equal("", messages[0]);
}
}