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); }
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(); }