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