public void TestOrderOfRequestPublishProcessingAndCancelled()
        {
            // Setup
            ServiceProvider         sp = BuildTestServiceProviderCancel();
            var                     publishMediator = sp.GetService <INotificationMediator <TestPublishNotication> >();
            var                     rq = new TestPublishNotication();
            CancellationTokenSource ts = new CancellationTokenSource();

            // Action
            var tsks = publishMediator.PublishAsync(rq, ts.Token);

            ts.Cancel();
            Assert.Throws <AggregateException>(() => Task.WaitAll(tsks));
            Assert.Equal(2, tsks.Length);
        }
        public void TestOrderOfRequestPublishProcessingOfExistedHandlerWithException()
        {
            // Setup
            ServiceProvider sp = BuildTestServiceProviderException();
            var             publishMediator = sp.GetService <INotificationMediator <TestPublishNotication> >();
            var             rq = new TestPublishNotication();

            // Action
            var tsks = publishMediator.PublishAsync(rq, CancellationToken.None);

            Assert.Throws <AggregateException>(() => Task.WaitAll(tsks));

            // Asserts
            Assert.Equal(5, tsks.Length);
            Assert.Equal(3, rq.Visitor.Count);
            Assert.Equal(ServicingOrder.Initialization.ToString(), rq.Visitor[0]);
            Assert.Equal(ServicingOrder.PreProcessing.ToString(), rq.Visitor[1]);
            Assert.Equal(ServicingOrder.Processing.ToString(), rq.Visitor[2]);
        }