public DynamicMessageHandlerInvoker(Action <IMessage> handler, Type messageType, ICollection <BindingKey> bindingKeys)
            : base(typeof(DummyHandler), messageType, false)
        {
            _handler = handler;

            var messageTypeId = MessageUtil.GetTypeId(messageType);

            _predicates = bindingKeys.Select(x => BindingKeyUtil.BuildPredicate(messageTypeId, x)).ToList();
        }
Ejemplo n.º 2
0
        public void should_match_valid_message(ExpectedResult expectedResult)
        {
            // Arrange
            var messageTypeId = MessageUtil.TypeId <FakeRoutableCommand>();

            // Act
            var predicate = BindingKeyUtil.BuildPredicate(messageTypeId, expectedResult.BindingKey);

            // Assert
            predicate(expectedResult.Message).ShouldEqual(expectedResult.Result);
        }
Ejemplo n.º 3
0
        public void should_get_binding_key_parts_for_member()
        {
            // Arrange
            var bindingKeys = new[]
            {
                Subscription.Matching <StrangeRoutableMessage>(x => x.Id == 123).BindingKey,
                Subscription.Matching <StrangeRoutableMessage>(x => x.Code == "456").BindingKey,
                Subscription.Matching <StrangeRoutableMessage>(x => x.Id == 123 && x.Code == "456").BindingKey,
                Subscription.Any <StrangeRoutableMessage>().BindingKey,
            };

            // Act
            var partsForId   = BindingKeyUtil.GetPartsForMember(MessageUtil.TypeId <StrangeRoutableMessage>(), nameof(StrangeRoutableMessage.Id), bindingKeys);
            var partsForCode = BindingKeyUtil.GetPartsForMember(MessageUtil.TypeId <StrangeRoutableMessage>(), nameof(StrangeRoutableMessage.Code), bindingKeys);

            // Assert
            partsForId.ShouldBeEquivalentTo(BindingKeyPart.Parse("123"), BindingKeyPart.Star, BindingKeyPart.Parse("123"), BindingKeyPart.Star);
            partsForCode.ShouldBeEquivalentTo(BindingKeyPart.Star, BindingKeyPart.Parse("456"), BindingKeyPart.Parse("456"), BindingKeyPart.Star);
        }
Ejemplo n.º 4
0
 public BindingKeyPart GetBindingKeyPartForMember(string memberName)
 {
     return BindingKeyUtil.GetPartForMember(MessageTypeId, memberName, BindingKey);
 }
Ejemplo n.º 5
0
 public IReadOnlyList <BindingKeyPart> GetBindingKeyPartsForMember(string memberName)
 => BindingKeyUtil.GetPartsForMember(MessageTypeId, memberName, BindingKeys).ToList();