public async Task Middleware_is_only_executed_once_per_command() { var middeware1Count = 0; var middeware2Count = 0; var middeware3Count = 0; using var kernel = new FakeKernel(); kernel.AddMiddleware(async(command, context, next) => { middeware1Count++; await next(command, context); }, "one"); kernel.AddMiddleware(async(command, context, next) => { middeware2Count++; await next(command, context); }, "two"); kernel.AddMiddleware(async(command, context, next) => { middeware3Count++; await next(command, context); }, "three"); await kernel.SendAsync(new SubmitCode("123")); middeware1Count.Should().Be(1); middeware2Count.Should().Be(1); middeware3Count.Should().Be(1); }
public async Task Queued_initialization_command_is_executed_on_to_first_submission() { var receivedCommands = new List <IKernelCommand>(); var kernel = new FakeKernel { Handle = (command, context) => { receivedCommands.Add(command); return(Task.CompletedTask); } }; using var events = kernel.KernelEvents.ToSubscribedList(); kernel.DeferCommand(new SubmitCode("one")); kernel.DeferCommand(new SubmitCode("two")); await kernel.SendAsync(new SubmitCode("three")); var x = receivedCommands .Select(c => c is SubmitCode submitCode ? submitCode.Code : c.ToString()) .Should() .BeEquivalentSequenceTo("one", "two", "three"); }