private static IPostRequestPlugin CreatePostRequestPlugin(int order) { IPostRequestPlugin plugin = Substitute.For <IPostRequestPlugin>(); plugin.Order.Returns(order); plugin.Process(null, null).ReturnsForAnyArgs((IResponseData)null); return(plugin); }
public async Task OnAfterRequestShouldInvokeThePluginsInTheCorrectOrder() { IPostRequestPlugin one = CreatePostRequestPlugin(1); IPostRequestPlugin two = CreatePostRequestPlugin(2); IPostRequestPlugin three = CreatePostRequestPlugin(3); this.bootstrapper.GetAfterRequestPlugins().Returns(new[] { three, one, two }); await this.processor.OnAfterRequest(this.request, Substitute.For <IResponseData>()); Received.InOrder(() => { one.Process(this.request, Arg.Any <IResponseData>()); two.Process(this.request, Arg.Any <IResponseData>()); three.Process(this.request, Arg.Any <IResponseData>()); }); }