public async Task Send_FakeGenericQuery_ShouldGoThroughHandlersCorrectly() { // Arrange var serviceProvider = new ServiceCollection() .AddLiteBus(configuration => { configuration.AddQueries(builder => { // Global Handlers builder.RegisterPreHandler <FakeGlobalQueryPreHandler>(); builder.RegisterPostHandler <FakeGlobalQueryPostHandler>(); // Fake Query Handlers builder.RegisterPreHandler(typeof(FakeGenericQueryPreHandler <>)); builder.RegisterHandler(typeof(FakeGenericQueryHandlerWithoutResult <>)); builder.RegisterPostHandler(typeof(FakeGenericQueryPostHandler <>)); }); }) .BuildServiceProvider(); var queryMediator = serviceProvider.GetRequiredService <IQueryMediator>(); var query = new FakeGenericQuery <string>(); // Act var queryResult = await queryMediator.QueryAsync(query); // Assert queryResult.CorrelationId.Should().Be(query.CorrelationId); query.ExecutedTypes.Should().HaveCount(5); query.ExecutedTypes[0].Should().Be <FakeGlobalQueryPreHandler>(); query.ExecutedTypes[1].Should().Be <FakeGenericQueryPreHandler <string> >(); query.ExecutedTypes[2].Should().Be <FakeGenericQueryHandlerWithoutResult <string> >(); query.ExecutedTypes[3].Should().Be <FakeGenericQueryPostHandler <string> >(); query.ExecutedTypes[4].Should().Be <FakeGlobalQueryPostHandler>(); }
public Task <FakeGenericQueryResult> HandleAsync(FakeGenericQuery <TPayload> message, CancellationToken cancellationToken = default) { message.ExecutedTypes.Add(typeof(FakeGenericQueryHandlerWithoutResult <TPayload>)); return(Task.FromResult(new FakeGenericQueryResult(message.CorrelationId))); }