예제 #1
0
        public void should_filter_messages_using_predicate(decimal id, string name, bool shouldBeHandled)
        {
            // Arrange
            var bindingKey1 = new BindingKey("1", "toto", "*");
            var bindingKey2 = new BindingKey("1", "titi", "*");
            var handler     = new DynamicMessageHandlerInvoker(_ => { }, typeof(FakeRoutableCommand), new[] { bindingKey1, bindingKey2 });

            var message = new FakeRoutableCommand(id, name);

            // Act
            var handled = handler.ShouldHandle(message);

            // Assert
            handled.ShouldEqual(shouldBeHandled);
        }
예제 #2
0
        public IDisposable Subscribe <T>(Action <T> handler) where T : class, IMessage
        {
            var eventHandlerInvoker = new DynamicMessageHandlerInvoker <T>(handler);
            var subscription        = new Subscription(eventHandlerInvoker.MessageTypeId);

            _messageDispatcher.AddInvoker(eventHandlerInvoker);

            AddSubscriptions(subscription);

            return(new DisposableAction(() =>
            {
                RemoveSubscriptions(subscription);
                _messageDispatcher.RemoveInvoker(eventHandlerInvoker);
            }));
        }
        public void should_do_this()
        {
            var predicateBuilder = new Mock <IBindingKeyPredicateBuilder>();
            var bindingKey1      = new BindingKey("1", "toto", "*");
            var bindingKey2      = new BindingKey("1", "titi", "*");

            predicateBuilder.Setup(x => x.GetPredicate(It.IsAny <Type>(), bindingKey1)).Returns(_ => true);
            predicateBuilder.Setup(x => x.GetPredicate(It.IsAny <Type>(), bindingKey2)).Returns(_ => false);
            var handler = new DynamicMessageHandlerInvoker(message => { }, typeof(FakeRoutableCommand), new[]
            {
                bindingKey1,
                bindingKey2
            }, predicateBuilder.Object);

            var shouldBeHandled = handler.ShouldHandle(new FakeRoutableCommand(1, "lal"));

            shouldBeHandled.ShouldBeTrue();
            predicateBuilder.Verify(x => x.GetPredicate(It.IsAny <Type>(), It.IsAny <BindingKey>()), Times.Exactly(2));
        }