public void ShouldThrowWhenNoRegisteredAttributeQueryHandlerIsFound()
            {
                var          registration = new QueryHandlerAttributeRegistration();
                var          dispatcher   = new LoggingQueryDispatcher(new QueryDispatcher(registration), _outputHelper);
                const string data         = nameof(ShouldThrowWhenNoRegisteredAttributeQueryHandlerIsFound);

                Action action = () => dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));

                action.Should().Throw <NoQueryHandlerResolvedException>();
            }
            public void ShouldPropagateExceptionFromQueryHandler()
            {
                var registration = new QueryHandlerRegistration();

                registration.Register(() => (IQueryHandler <QuerySomethingWithException, string>) new TestQueryHandler(_outputHelper));
                var dispatcher = new LoggingQueryDispatcher(new QueryDispatcher(registration), _outputHelper);

                Action action = () => dispatcher.Dispatch <QuerySomethingWithException, string>(
                    new QuerySomethingWithException("This will cause an exception."));

                action.Should().Throw <TestQueryHandlerException>();
            }
            public void ShouldThrowWhenNoRegisteredQueryHandlerInContainerIsFound()
            {
                var          container        = new Container();
                var          containerAdapter = new SimpleInjectorContainerAdapter(container);
                var          resolver         = new ContainerQueryHandlerResolver(containerAdapter); // Sync handler resolver
                var          dispatcher       = new LoggingQueryDispatcher(new QueryDispatcher(resolver), _outputHelper);
                const string data             = nameof(ShouldThrowWhenNoRegisteredAttributeQueryHandlerIsFound);

                Action action = () => dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));

                action.Should().Throw <NoQueryHandlerResolvedException>();
            }
            public void ShouldThrowWhenNoRegisteredQueryHandlerIsFound()
            {
                var registration = new QueryHandlerRegistration();
                var dispatcher   = new LoggingQueryDispatcher(new QueryDispatcher(registration), _outputHelper);

                const string data = nameof(ShouldThrowWhenNoRegisteredQueryHandlerIsFound);

                Func <Task> action = () =>
                {
                    return(dispatcher.DispatchAsync <QuerySomething, string>(new QuerySomething(data)));
                };

                action.Should().Throw <NoQueryHandlerResolvedException>();
            }