65 lines
1.9 KiB
C#
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)
|
|
{
|
|
}
|
|
}
|