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);
            }
Example #3
0
            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);
            }