Files
DotNetAngular/tests/Application.UnitTest/Common/Results/ResultTests.cs
T
2026-06-10 23:37:08 +02:00

65 lines
1.9 KiB
C#

using Application.Common.Results;
namespace Application.UnitTest.Common.Results;
public class ResultTests
{
[Fact]
public void Success_ShouldReturnResultWithIsSuccessTrue()
{
var result = Result.Success();
Assert.True(result.IsSuccess);
Assert.False(result.IsFailure);
Assert.Equal(ErrorTypeConstant.None, result.Error.Code);
}
[Fact]
public void Success_WithValue_ShouldReturnResultWithValue()
{
var result = Result.Success("test-value");
Assert.True(result.IsSuccess);
Assert.Equal("test-value", result.Value);
}
[Fact]
public void Failure_ShouldReturnResultWithIsFailureTrue()
{
var error = new Error("TestError", "Something went wrong");
var result = Result.Failure(error);
Assert.True(result.IsFailure);
Assert.False(result.IsSuccess);
Assert.Equal("TestError", result.Error.Code);
Assert.Equal("Something went wrong", result.Error.Message);
}
[Fact]
public void Failure_WithValueType_ShouldReturnTypedResult()
{
var error = new Error("NotFound", "Item not found");
var result = Result.Failure<string>(error);
Assert.True(result.IsFailure);
Assert.Throws<InvalidOperationException>(() => result.Value);
}
[Fact]
public void Constructor_ShouldThrow_WhenSuccessWithError()
{
var error = new Error("SomeError", "message");
Assert.Throws<InvalidOperationException>(() => new ResultTestCase(true, error));
}
[Fact]
public void Constructor_ShouldThrow_WhenFailureWithNoError()
{
var noneError = new Error("None", string.Empty);
Assert.Throws<InvalidOperationException>(() => new ResultTestCase(false, noneError));
}
}
public class ResultTestCase : Result
{
public ResultTestCase(bool isSuccess, Error error) : base(isSuccess, error)
{
}
}