コード例 #1
0
        public void should_receive_events_from_all_publishers()
        {
            var cc = new Context();

            Scenario.Define(cc)
            .WithEndpoint <Publisher1>(b =>
                                       b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s =>
            {
                if (s.SubscriberReturnAddress.Queue.Contains("Subscriber1"))
                {
                    context.SubscribedToPublisher1 = true;
                }
            }))
                                       .When(c => c.SubscribedToPublisher1, bus => bus.Publish(new DerivedEvent1()))
                                       )
            .WithEndpoint <Publisher2>(b =>
                                       b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s =>
            {
                if (s.SubscriberReturnAddress.Queue.Contains("Subscriber1"))
                {
                    context.SubscribedToPublisher2 = true;
                }
            }))
                                       .When(c => c.SubscribedToPublisher2, bus => bus.Publish(new DerivedEvent2()))
                                       )
            .WithEndpoint <Subscriber1>(b => b.Given((bus, context) =>
            {
                if (!Feature.IsEnabled <MessageDrivenSubscriptions>())
                {
                    context.SubscribedToPublisher1 = true;
                    context.SubscribedToPublisher2 = true;
                }
            }))
            .Done(c => c.GotTheEventFromPublisher1 && c.GotTheEventFromPublisher2)
            .Run();

            Assert.True(cc.GotTheEventFromPublisher1);
            Assert.True(cc.GotTheEventFromPublisher2);
        }
コード例 #2
0
        public void Should_be_delivered_to_allsubscribers()
        {
            Scenario.Define<Context>()
                    .WithEndpoint<Publisher>(b =>
                        b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s =>
                        {
                            if (s.SubscriberReturnAddress.Queue.Contains("Subscriber1"))
                                context.Subscriber1Subscribed = true;

                            if (s.SubscriberReturnAddress.Queue.Contains("Subscriber2"))
                                context.Subscriber2Subscribed = true;
                        }))
                        .When(c => c.Subscriber1Subscribed && c.Subscriber2Subscribed, bus => bus.Publish(new MyEvent()))
                     )
                    .WithEndpoint<Subscriber1>(b => b.Given((bus, context) =>
                        {
                            bus.Subscribe<MyEvent>();

                            if (!Feature.IsEnabled<MessageDrivenSubscriptions>())
                                context.Subscriber1Subscribed = true;
                        }))
                      .WithEndpoint<Subscriber2>(b => b.Given((bus, context) =>
                      {
                          bus.Subscribe<MyEvent>();

                          if (!Feature.IsEnabled<MessageDrivenSubscriptions>())
                              context.Subscriber2Subscribed = true;
                      }))
                    .Done(c => c.Subscriber1GotTheEvent && c.Subscriber2GotTheEvent)
                    .Repeat(r => r.For(Transports.Msmq))
                    .Should(c =>
                    {
                        Assert.True(c.Subscriber1GotTheEvent);
                        Assert.True(c.Subscriber2GotTheEvent);
                    })

                    .Run();
        }