public async Task CombineASimpleFuncAndAMiddlewareShouldReturnAFuncThatCombinesThemTask() { // Given var calls = new List <string>(); SimpleTaskMiddlewareFunc <string> func = async str => { calls.Add($"Func: {str}"); await Task.CompletedTask; }; TaskMiddleware <string> middleware = async(str, next, ct) => { calls.Add($"Before: {str}"); await next(str, ct); calls.Add($"After: {str}"); }; var context = "Hello"; // When await func.Combine(middleware)(context, default); // Then calls.Should().Equal("Before: Hello", "Func: Hello", "After: Hello"); }
public static TaskMiddlewareFunc <TContext> Combine <TContext>( this TaskMiddleware <TContext> middleware, SimpleTaskMiddlewareFunc <TContext> func) => (context, ct) => middleware(context, (c, _) => func(c), ct);