diff --git a/src/MediatR.Extensions.FluentValidation.AspNetCore.Tests/ValidationTests.cs b/src/MediatR.Extensions.FluentValidation.AspNetCore.Tests/ValidationTests.cs index 0079a27..2a7e194 100644 --- a/src/MediatR.Extensions.FluentValidation.AspNetCore.Tests/ValidationTests.cs +++ b/src/MediatR.Extensions.FluentValidation.AspNetCore.Tests/ValidationTests.cs @@ -48,7 +48,9 @@ public class CommandValidation : AbstractValidator { public CommandValidation() { - RuleFor(x => x.Discount).GreaterThanOrEqualTo(0); + RuleFor(x => x.Discount) + .GreaterThanOrEqualTo(0) + .MustAsync(async (_, __) => await Task.Delay(0).ContinueWith(x => true)); } } @@ -65,4 +67,4 @@ public async Task Handle(Command request, CancellationToken cancellationTo return await Unit.Task; } } -} +} \ No newline at end of file diff --git a/src/MediatR.Extensions.FluentValidation.AspNetCore/ValidationBehavior.cs b/src/MediatR.Extensions.FluentValidation.AspNetCore/ValidationBehavior.cs index 9575ed1..6eeb1ce 100644 --- a/src/MediatR.Extensions.FluentValidation.AspNetCore/ValidationBehavior.cs +++ b/src/MediatR.Extensions.FluentValidation.AspNetCore/ValidationBehavior.cs @@ -16,13 +16,14 @@ public ValidationBehavior(IEnumerable> validators) _validators = validators; } - public Task Handle(TRequest request + public async Task Handle(TRequest request , CancellationToken cancellationToken , RequestHandlerDelegate next ) { - var failures = _validators - .Select(v => v.Validate(request)) + var failures = + (await Task.WhenAll(_validators.Select(async v => await v.ValidateAsync(request, cancellationToken)))) + .Where(result => result != null) .SelectMany(result => result.Errors) .Where(f => f != null) .ToList(); @@ -32,7 +33,7 @@ public Task Handle(TRequest request throw new ValidationException(failures); } - return next(); + return await next(); } } } \ No newline at end of file