public async Task IMiddlewareBuilderExtensions_Run() { // arrange var builder = new MiddlewareBuilder <Context>(); var list = new List <string>(); // act var messageHandler = builder .Use(next => async context => { list.Add("A"); next(context); }) .Use(async context => list.Add("B")) .Run(async context => list.Add("C")) .Use(next => async context => { list.Add("D"); next(context); }) .Build(); var x = new OtherContext("bar"); await messageHandler(x); // assert Assert.Collection(list, l => Assert.Equal("A", l), l => Assert.Equal("B", l), l => Assert.Equal("C", l) ); }
public async Task IMiddlewareBuilderExtensions_Use_OtherContext() { // arrange var builder = new MiddlewareBuilder <OtherContext>(); var list = new List <string>(); // act builder.Use(next => { return(async context => { list.Add(context.GetType().Name + " B " + context.Foo); await next(context); }); }); builder.Use(new TestMiddleware <OtherContext>(list)); builder.Use(async(context, next) => { list.Add(context.GetType().Name + " C " + context.Foo); await next(context); }); var executeAsync = builder.Build(); var x = new OtherContext("bar"); await executeAsync(x); // assert Assert.Collection(list, l => Assert.Equal("OtherContext B bar", l), l => Assert.Equal("TestMiddleware", l), l => Assert.Equal("OtherContext C bar", l) ); }
public async Task IMiddlewareBuilderExtensions_Use_IMiddleware() { // arrange var builder = new MiddlewareBuilder <Context>(); var list = new List <string>(); // act builder.Use(new TestMiddleware <Context>(list)); var executeAsync = builder.Build(); var x = new Context(); await executeAsync(x); // assert Assert.Collection(list, l => Assert.Equal("TestMiddleware", l) ); }
public async Task IMiddlewareBuilderExtensions_Use_Lambda() { // arrange var builder = new MiddlewareBuilder <Context>(); var list = new List <string>(); // act builder.Use(async(context, next) => { list.Add("C"); await next(context); }); var executeAsync = builder.Build(); var x = new Context(); await executeAsync(x); // assert Assert.Collection(list, l => Assert.Equal("C", l) ); }