public async Task Should_Store_Registered_Query_Handler_In_Container() { var queryHandler = new TestQueryHandler(_testOutputHelper); var container = new Container(); container.Register <IQueryAsyncHandler <QuerySomething, string> >(() => queryHandler, Lifestyle.Singleton); var containerAdapter = new SimpleInjectorContainerAdapter(container); var resolver = new ContainerQueryAsyncHandlerResolver(containerAdapter); // Async handler resolver const string data = nameof(Should_Store_Registered_Query_Handler_In_Container); QueryHandlerDelegate <string> queryHandlerDelegate = resolver.ResolveQueryHandler <QuerySomething, string>(); Assert.NotNull(queryHandlerDelegate); var registeredQueryHandler = container.GetInstance <IQueryAsyncHandler <QuerySomething, string> >(); var query = new QuerySomething(data); var result1 = await queryHandlerDelegate.Invoke(query); var result2 = await registeredQueryHandler.HandleAsync(query); Assert.Equal(data, result1); Assert.Equal(data, result2); Assert.Equal(result1, result2); }
public async Task ShouldResolveQueryHandlersFromContainer() { var queryHandler = new TestQueryHandler(_testOutputHelper); var container = new Container(); container.Register <IQueryAsyncHandler <QuerySomething, string> >(() => queryHandler, Lifestyle.Singleton); var containerAdapter = new SimpleInjectorContainerAdapter(container); var resolver = new ContainerQueryAsyncHandlerResolver(containerAdapter); // Async handler resolver const string data = nameof(ShouldResolveQueryHandlersFromContainer); QueryHandlerDelegate <string> queryHandlerDelegate = resolver.ResolveQueryHandler <QuerySomething, string>(); queryHandlerDelegate.Should().NotBeNull(); var registeredQueryHandler = container.GetInstance <IQueryAsyncHandler <QuerySomething, string> >(); var query = new QuerySomething(data); var result1 = await queryHandlerDelegate.Invoke(query); var result2 = await registeredQueryHandler.HandleAsync(query); result1.Should().Be(data); result2.Should().Be(data); result1.Should().Be(result1); }
public async Task ShouldRegisterAllQueryHandlers() { var queryHandler = new TestQueryHandler(_testOutputHelper); var registration = new QueryHandlerRegistration(); registration.Register(() => (IQueryAsyncHandler <QuerySomething, string>)queryHandler); QueryHandlerDelegate <string> queryHandlerDelegate = registration.ResolveQueryHandler <QuerySomething, string>(); var query = new QuerySomething(nameof(ShouldRegisterAllQueryHandlers)); var result1 = await queryHandler.HandleAsync(query); var result2 = await queryHandlerDelegate.Invoke(query); result1.Should().Be(result2); }