66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using FluentResults;
|
|
using Xunit;
|
|
|
|
namespace IdentityShroud.Core.Tests;
|
|
|
|
public static class ResultAssert
|
|
{
|
|
public static void Success(Result result)
|
|
{
|
|
if (!result.IsSuccess)
|
|
{
|
|
var errors = string.Join("\n", result.Errors.Select(e => "\t" + e.Message));
|
|
Assert.True(result.IsSuccess, $"ResultAssert.Success: failed, got errors:\n{errors}");
|
|
}
|
|
}
|
|
|
|
public static T Success<T>(Result<T> result)
|
|
{
|
|
Success(result.ToResult());
|
|
return result.Value;
|
|
}
|
|
|
|
public static void Failed(Result result, Predicate<IError>? filter = null)
|
|
{
|
|
if (!result.IsFailed)
|
|
{
|
|
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
|
|
}
|
|
|
|
if (filter is not null)
|
|
Assert.Contains(result.Errors, filter);
|
|
}
|
|
|
|
public static void Failed<T>(Result<T> result, Predicate<IError>? filter = null)
|
|
{
|
|
Failed(result.ToResult(), filter);
|
|
}
|
|
|
|
public static void FailedWith<TError>(Result result) where TError : IError
|
|
{
|
|
if (!result.IsFailed)
|
|
{
|
|
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
|
|
}
|
|
|
|
if (!result.Errors.Any(e => e is TError))
|
|
{
|
|
string typeName = typeof(TError).Name;
|
|
Assert.Fail($"ResultAssert.Failed: failed, no error of the type {typeName} found");
|
|
}
|
|
}
|
|
|
|
public static void FailedWith<T, TError>(Result<T> result) where TError : IError
|
|
{
|
|
if (!result.IsFailed)
|
|
{
|
|
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
|
|
}
|
|
|
|
if (!result.Errors.Any(e => e is TError))
|
|
{
|
|
string typeName = typeof(TError).Name;
|
|
Assert.Fail($"ResultAssert.Failed: failed, no error of the type {typeName} found");
|
|
}
|
|
}
|
|
}
|