public void When_We_Have_Exercised_The_Pipeline_Cleanup_Its_Handlers()
        {
            _pipeline_Builder.Dispose();

            //_should_have_called_dispose_on_instances_from_ioc
            Assert.True(MyPreAndPostDecoratedHandler.DisposeWasCalled);
            //_should_have_called_dispose_on_instances_from_pipeline_builder
            Assert.True(MyLoggingHandler <MyCommand> .DisposeWasCalled);
            //_should_have_called_release_on_all_handlers
            Assert.AreEqual("|MyValidationHandler`1|MyPreAndPostDecoratedHandler|MyLoggingHandler`1|MyLoggingHandler`1", s_released);
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestPreAndPostDecoratedHandler>();
            registry.Register <TestCommand, TestLoggingHandler <TestCommand> >();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestPreAndPostDecoratedHandler>();
            container.Register <IHandleRequests <TestCommand>, TestValidationHandler <TestCommand> >();
            container.Register <IHandleRequests <TestCommand>, TestLoggingHandler <TestCommand> >();
            container.Register(logger);

            pipelineBuilder = new PipelineBuilder <TestCommand>(registry, handlerFactory, logger);

            pipelineBuilder.Build(new RequestContext());

            pipelineBuilder.Dispose();
        }