public void NoExceptionsWhenRegisteringSubscribersOfNoMatchingPublishers()
        {
            var subscriberFake = Substitute.For<IEventSubscriber<FooHappens>>();
            var bus = new SingleProcessMessageBus();

            bus.RegisterSubscriber(subscriberFake);
        }
        public void ThreeSubsDontHandleEventWhenSubsAreRegisteredThenSubsAreUnRegisteredThenPubIsRegistered()
        {
            var subscriberId1   = Guid.NewGuid();
            var subscriberId2   = Guid.NewGuid();
            var subscriberId3   = Guid.NewGuid();
            var subscriberFake1 = Substitute.For <IEventSubscriber <FooHappens> >();
            var subscriberFake2 = Substitute.For <IEventSubscriber <FooHappens> >();
            var subscriberFake3 = Substitute.For <IEventSubscriber <FooHappens> >();
            var publisherFake   = new FooPublisher();

            subscriberFake1.Id.Returns(subscriberId1);
            subscriberFake2.Id.Returns(subscriberId2);
            subscriberFake3.Id.Returns(subscriberId3);
            var messageId = Guid.NewGuid();
            var message   = new FooHappens(messageId);
            var bus       = new SingleProcessMessageBus();

            bus.RegisterSubscriber(subscriberFake1);
            bus.RegisterSubscriber(subscriberFake2);
            bus.RegisterSubscriber(subscriberFake3);
            bus.UnRegisterSubscriber(subscriberFake1);
            bus.UnRegisterSubscriber(subscriberFake2);
            bus.UnRegisterSubscriber(subscriberFake3);
            bus.RegisterPublisher(publisherFake);

            publisherFake.Publish(message);

            subscriberFake1.Received(0).Handle(message);
            subscriberFake2.Received(0).Handle(message);
            subscriberFake3.Received(0).Handle(message);
        }
        public void NoExceptionsWhenRegisteringSubscribersOfNoMatchingPublishers()
        {
            var subscriberFake = Substitute.For <IEventSubscriber <FooHappens> >();
            var bus            = new SingleProcessMessageBus();

            bus.RegisterSubscriber(subscriberFake);
        }
        public void NoExceptionsWhenOverwritingRegistrationsOfSubscribersOfMatchingPublishers()
        {
            var subscriberId1 = Guid.NewGuid();
            var subscriberId2 = Guid.NewGuid();
            var subscriberFake1 = Substitute.For<IEventSubscriber<FooHappens>>();
            var subscriberFake2 = Substitute.For<IEventSubscriber<FooHappens>>();
            var publisherFake1 = Substitute.For<IEventPublisher<FooHappens>>();
            subscriberFake1.Id.Returns(subscriberId1);
            subscriberFake2.Id.Returns(subscriberId2);
            var bus = new SingleProcessMessageBus();
            bus.RegisterPublisher(publisherFake1);
            bus.RegisterSubscriber(subscriberFake1);
            bus.RegisterSubscriber(subscriberFake2);

            bus.RegisterSubscriber(subscriberFake1);
            bus.RegisterSubscriber(subscriberFake2);
        }
        public void NoExceptionsWhenRegisteringSubscribersOfMatchingPublishers()
        {
            var subscriberId1   = Guid.NewGuid();
            var subscriberId2   = Guid.NewGuid();
            var subscriberFake1 = Substitute.For <IEventSubscriber <FooHappens> >();
            var subscriberFake2 = Substitute.For <IEventSubscriber <FooHappens> >();
            var publisherFake1  = Substitute.For <IEventPublisher <FooHappens> >();

            subscriberFake1.Id.Returns(subscriberId1);
            subscriberFake2.Id.Returns(subscriberId2);
            var bus = new SingleProcessMessageBus();

            bus.RegisterPublisher(publisherFake1);

            bus.RegisterSubscriber(subscriberFake1);
            bus.RegisterSubscriber(subscriberFake2);
        }
        public void OneSubHandlesEventWhenSubIsRegisteredThenPubIsRegistered()
        {
            var messageId      = Guid.NewGuid();
            var subscriberId   = Guid.NewGuid();
            var subscriberFake = Substitute.For <IEventSubscriber <FooHappens> >();
            var publisherFake  = new FooPublisher();

            subscriberFake.Id.Returns(subscriberId);
            var bus = new SingleProcessMessageBus();

            bus.RegisterSubscriber(subscriberFake);
            bus.RegisterPublisher(publisherFake);
            var message = new FooHappens(messageId);

            publisherFake.Publish(message);

            subscriberFake.Received(1).Handle(message);
        }
        public void ThreeSubsDontHandleEventWhenSubsAreRegisteredThenSubsAreUnRegisteredThenPubIsRegistered()
        {
            var subscriberId1 = Guid.NewGuid();
            var subscriberId2 = Guid.NewGuid();
            var subscriberId3 = Guid.NewGuid();
            var subscriberFake1 = Substitute.For<IEventSubscriber<FooHappens>>();
            var subscriberFake2 = Substitute.For<IEventSubscriber<FooHappens>>();
            var subscriberFake3 = Substitute.For<IEventSubscriber<FooHappens>>();
            var publisherFake = new FooPublisher();
            subscriberFake1.Id.Returns(subscriberId1);
            subscriberFake2.Id.Returns(subscriberId2);
            subscriberFake3.Id.Returns(subscriberId3);
            var messageId = Guid.NewGuid();
            var message = new FooHappens(messageId);
            var bus = new SingleProcessMessageBus();
            bus.RegisterSubscriber(subscriberFake1);
            bus.RegisterSubscriber(subscriberFake2);
            bus.RegisterSubscriber(subscriberFake3);
            bus.UnRegisterSubscriber(subscriberFake1);
            bus.UnRegisterSubscriber(subscriberFake2);
            bus.UnRegisterSubscriber(subscriberFake3);
            bus.RegisterPublisher(publisherFake);

            publisherFake.Publish(message);

            subscriberFake1.Received(0).Handle(message);
            subscriberFake2.Received(0).Handle(message);
            subscriberFake3.Received(0).Handle(message);
        }
        public void OneSubDoesntHandleEventWhenSubIsRegisteredThenSubIsUnRegisteredThenPubIsRegistered()
        {
            var messageId = Guid.NewGuid();
            var subscriberId = Guid.NewGuid();
            var subscriberFake = Substitute.For<IEventSubscriber<FooHappens>>();
            var publisherFake = new FooPublisher();
            subscriberFake.Id.Returns(subscriberId);
            var bus = new SingleProcessMessageBus();
            bus.RegisterSubscriber(subscriberFake);
            bus.UnRegisterSubscriber(subscriberFake);
            bus.RegisterPublisher(publisherFake);
            var message = new FooHappens(messageId);

            publisherFake.Publish(message);

            subscriberFake.Received(0).Handle(message);
        }