public void WhenHandlerRegisteredForQueryThenShouldDispatchQueryToHandler()
        {
            var services = new ServiceCollection();

            services.AddOpenEventSourcing()
            .AddQueries()
            .Services
            .AddLogging();

            var serviceProvider = services.BuildServiceProvider();
            var dispatcher      = serviceProvider.GetRequiredService <IQueryDispatcher>();
            var handler         = serviceProvider.GetRequiredService <IQueryHandler <FakeDispatchableQuery, bool> >();
            var query           = new FakeDispatchableQuery();

            Func <Task> act = () => dispatcher.DispatchAsync(query);

            act.Should().NotThrow();

            ((FakeDispatchableQueryHandler)handler).Handled.Should().Be(1);
        }
        public void WhenCancellationTokenRemainsNonCancelledThenShouldNotThrowOperationCancelledException()
        {
            var services = new ServiceCollection();

            services.AddOpenEventSourcing()
            .AddQueries()
            .Services
            .AddLogging();

            var serviceProvider         = services.BuildServiceProvider();
            var dispatcher              = serviceProvider.GetRequiredService <IQueryDispatcher>();
            var handler                 = serviceProvider.GetRequiredService <IQueryHandler <FakeDispatchableQuery, bool> >();
            var command                 = new FakeDispatchableQuery();
            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            Func <Task> act = () => dispatcher.DispatchAsync(command, cancellationTokenSource.Token);

            act.Should().NotThrow();

            ((FakeDispatchableQueryHandler)handler).Handled.Should().Be(1);
        }