public async Task OnEventsDispatched_When_Defined_OnEventDispatched_Should_Not_BeCalled()
        {
            bool simpleCalled   = false;
            bool multipleCalled = false;
            Func <IEnumerable <IDomainEvent>, Task> lambdaMulti = async(e) => multipleCalled = true;
            Func <IDomainEvent, Task> lambda = async(e) => simpleCalled = true;

            try
            {
                var evt1 = new EventDispatchedOne();
                var evt2 = new EventDispatchedTwo();

                var collection = new BaseDomainEvent[] { evt1, evt2 };

                CoreDispatcher.OnEventDispatched  += lambda;
                CoreDispatcher.OnEventsDispatched += lambdaMulti;

                await CoreDispatcher.PublishEventsRangeAsync(collection);

                simpleCalled.Should().BeFalse();
                multipleCalled.Should().BeTrue();
            }
            finally
            {
                CoreDispatcher.OnEventDispatched  -= lambda;
                CoreDispatcher.OnEventsDispatched -= lambdaMulti;
            }
        }
        public async Task OnEventDispatched_Should_Be_Called_On_Publish()
        {
            bool called = false;
            Func <IDomainEvent, Task> lambda = async(e) => called = true;

            try
            {
                var evt1 = new EventDispatchedOne();

                CoreDispatcher.OnEventDispatched += lambda;

                await CoreDispatcher.PublishEventAsync(evt1);

                called.Should().BeTrue();
            }
            finally
            {
                CoreDispatcher.OnEventDispatched -= lambda;
            }
        }