public void PipelineBuilding()
        {
            var             builder  = MockRepository.GenerateMock <IObjectBuilder>();
            MessagePipeline pipeline = MessagePipelineConfigurator.CreateDefault(builder, null);

            pipeline.Subscribe <MetadataConsumer>();
            pipeline.Subscribe <MetadataPConsumer>();

            PipelineViewer.Trace(pipeline);
        }
        public void The_appropriate_handler_should_be_added()
        {
            IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>();

            _pipeline.Subscribe(consumer);

            PingMessage message = new PingMessage();

            _pipeline.Dispatch(message, x => true);

            Assert.AreEqual(message, consumer.Consumed);
        }
Example #3
0
        public void for_batch_subscriptions()
        {
            _subscriptionEvent.Expect(x => x.SubscribedTo <IndividualBatchMessage>()).Return(() =>
            {
                _unsubscribe();
                return(true);
            });

            var consumer = new TestBatchConsumer <IndividualBatchMessage, Guid>();
            var token    = _pipeline.Subscribe(consumer);

            token();

            _subscriptionEvent.VerifyAllExpectations();
            _unsubscribe.AssertWasCalled(x => x());
        }
        public void I_want_to_display_a_more_detailed_flow()
        {
            _pipeline.Filter <object>(m => true);
            _pipeline.Subscribe <PingMessage>(m => { }, x => { return(true); });

            PipelineViewer.Trace(_pipeline);
        }
        public void The_pipeline_should_be_happy()
        {
            IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>();

            _pipeline.Subscribe(consumer);

            _pipeline.Dispatch(new PingMessage());

            Assert.IsNotNull(consumer.Consumed);
        }
Example #6
0
        public void for_batch_component_subscriptions()
        {
            _subscriptionEvent.Expect(x => x.SubscribedTo <IndividualBatchMessage>()).Return(() =>
            {
                _unsubscribe();
                return(true);
            });

            _pipeline.Subscribe <TestBatchConsumer <IndividualBatchMessage, Guid> >();

            _subscriptionEvent.VerifyAllExpectations();
        }
Example #7
0
        public void The_endpoint_consumer_should_be_returned()
        {
            IEndpoint endpoint = MockRepository.GenerateMock <IEndpoint>();

            endpoint.Stub(x => x.Uri).Return(new Uri("msmq://localhost/queue_name"));

            _pipeline.Subscribe <PingMessage>(endpoint);

            PipelineViewer.Trace(_pipeline);

            PingMessage message = new PingMessage();

            endpoint.Expect(x => x.Send(message));

            _pipeline.Dispatch(message);

            endpoint.VerifyAllExpectations();
        }
        public void A_filter_should_be_nameable()
        {
            var consumer = new TestMessageConsumer <PingMessage>();

            _pipeline.Filter <PingMessage>("Message Blocker", x => false);

            _pipeline.Subscribe(consumer);

            var message = new PingMessage();

            _pipeline.Dispatch(message);

            consumer.ShouldNotHaveReceivedMessage(message);

            PipelineViewer.Trace(_pipeline);
        }
        public void A_bunch_of_mixed_subscriber_types_should_work()
        {
            IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>();
            ParticularConsumer consumerYes = new ParticularConsumer(true);
            ParticularConsumer consumerNo  = new ParticularConsumer(false);

            Stopwatch firstTime        = Stopwatch.StartNew();
            var       unsubscribeToken = _pipeline.Subscribe(consumer);

            firstTime.Stop();

            Stopwatch secondTime = Stopwatch.StartNew();

            unsubscribeToken += _pipeline.Subscribe(consumerYes);
            secondTime.Stop();

            unsubscribeToken += _pipeline.Subscribe(consumerNo);

            Trace.WriteLine(string.Format("First time: {0}, Second Time: {1}", firstTime.Elapsed, secondTime.Elapsed));

            PipelineViewer.Trace(_pipeline);

            PingMessage message = new PingMessage();

            _pipeline.Dispatch(message);

            Assert.AreEqual(message, consumer.Consumed);
            Assert.AreEqual(message, consumerYes.Consumed);
            Assert.AreEqual(null, consumerNo.Consumed);

            unsubscribeToken();

            PingMessage nextMessage = new PingMessage();

            _pipeline.Dispatch(nextMessage);

            Assert.AreEqual(message, consumer.Consumed);
            Assert.AreEqual(message, consumerYes.Consumed);
        }