public async Task StartConsumingPublishesConsumedMessageToMediator()
        {
            var fakeMessage             = new FakeMessage("some-key-id", "some-property-value");
            var cancellationTokenSource = new CancellationTokenSource();
            var mockMediator            = new Mock <IMediator>();
            var serviceProvider         = BuildServiceProvider(mockMediator.Object);
            var stubLogger   = Mock.Of <ILogger <KafkaTopicMessageConsumer> >();
            var stubConsumer = new Mock <IConsumer <string, string> >();

            stubConsumer
            .Setup(x => x.Consume(It.IsAny <CancellationToken>()))
            .Returns(BuildFakeConsumeResult(fakeMessage));
            var stubMessageConsumerBuilder = new Mock <IKafkaConsumerBuilder>();

            stubMessageConsumerBuilder
            .Setup(x => x.Build())
            .Returns(stubConsumer.Object);

            // TODO: find better way to test than relying on async timing
            var sut = new KafkaTopicMessageConsumer(stubLogger, stubMessageConsumerBuilder.Object, serviceProvider);

            Task.Run(() => sut.StartConsuming("fake-messages", cancellationTokenSource.Token));
            await Task.Delay(500);

            cancellationTokenSource.Cancel();

            mockMediator.Verify(x =>
                                x.Publish(
                                    It.Is <object>(i => i.GetType() == typeof(MessageNotification <FakeMessage>)),
                                    It.IsAny <CancellationToken>()));
        }
        public IActionResult Add(int id, string message) // satıcı id gelir. alanId
        {
            if (!(Convert.ToBoolean(HttpContext.Session.GetString("Active"))))
            {
                return(RedirectToAction("Login", "IO"));
            }

            string  tempId = HttpContext.Session.GetString("id");
            int     userId = int.Parse(tempId); //yollayanId
            Message mesaj  = new Message()
            {
                AlanId      = id,
                YollayanId  = userId,
                Mesaj       = message,
                MesajTarihi = DateTime.Now
            };

            _messageService.Add(mesaj);

            FakeMessage fakeMessage = new FakeMessage() // fake mesaj veritabanına ürün eklendi
            {
                RealMessageId = mesaj.Id,
                AlanId        = id,
                Mesaj         = message,
                MesajTarihi   = mesaj.MesajTarihi,
                YollayanId    = userId
            };

            _fakeMessageService.Add(fakeMessage);


            return(RedirectToAction("GetAll", "Product"));
        }
 public void AfterReceiveReply(ref Message reply, object correlationState)
 {
     if (reply.IsFault)
     {
         reply = new FakeMessage(reply.Version, (string)correlationState);
     }
 }
        protected override void given_the_context_of()
        {
            _node = Mock<IInteractionNode>();

            _element = new FakeElement();
            _message = new FakeMessage {AvailabilityEffect = Mock<IAvailabilityEffect>()};
        }
        public void methods_with_parameters_equal_to_those_provided_should_yield_provided()
        {
            const string param1 = "a string";
            const int param2 = 56;

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection<Parameter>
                {
                    new Parameter {Value = param1},
                    new Parameter {Value = param2}
                }
            };

            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(string)),
                new RequiredParameter("param2", typeof(int))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(2));
            Assert.That(result, Has.Member(param1));
            Assert.That(result, Has.Member(param2));
        }
        public void parameters_should_be_coerced_to_the_proper_type()
        {
            const int param1 = 56;
            const double param2 = 34.0;

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection<Parameter>
                {
                    new Parameter {Value = param1},
                    new Parameter {Value = param2}
                }
            };

            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(string)),
                new RequiredParameter("param2", typeof(int))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(2));
            Assert.That(result, Has.Member(param1.ToString()));
            Assert.That(result, Has.Member(Convert.ToInt32(param2)));
        }
예제 #7
0
        public void if_none_are_provided_check_for_value()
        {
            var source = new TextBox {
                Text = "the text"
            };

            sourceNode.Stub(x => x.UIElement).Return(source);

            var defaults = Stub <IElementConvention>();

            conventionManager.Expect(x => x.GetElementConvention(typeof(TextBox)))
            .Return(defaults);

            defaults.Expect(x => x.GetValue(source)).Return(source.Text);

            var message = new FakeMessage();

            message.Initialize(sourceNode);

            var element = new ControlHost();

            handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("value", typeof(object)),
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, null
                );

            result.Length.ShouldBe(1);
            result.Contains(source.Text).ShouldBeTrue();
        }
예제 #8
0
        public void TestUnencrypted()
        {
            using var buffer = new PacketBuffer();

            using (var message = new FakeMessage {
                Text = text, MessageFlags = MessageFlags.Unencrypted
            })
            {
                message.WritePacket(buffer, PacketRole.Client);
            }

            buffer.Position = 0;
            byte[]? content;

            using (var received = new FakeMessage())
            {
                received.ReadPacket(buffer, PacketRole.Server);
                content = received.PacketContent;

                Assert.AreEqual(text, received.Text);
            }

            // Reading a packet must not alter its contents
            Assert.IsNotNull(content);
            using var contentBuffer = new PacketBuffer(content);
            Assert.AreEqual(text, contentBuffer.ReadMediumString());
        }
예제 #9
0
        public void parameters_should_be_coerced_to_the_proper_type()
        {
            const int    param1 = 56;
            const double param2 = 34.0;

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection <Parameter>
                {
                    new Parameter {
                        Value = param1
                    },
                    new Parameter {
                        Value = param2
                    }
                }
            };

            message.Initialize(sourceNode);

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("param1", typeof(string)),
                new RequiredParameter("param2", typeof(int))
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, null
                );

            result.Length.ShouldBe(2);
            result.Contains(param1.ToString()).ShouldBeTrue();
            result.Contains(Convert.ToInt32(param2)).ShouldBeTrue();
        }
예제 #10
0
        public async Task ProcessMessagesAsync_Message_VerifyVerison()
        {
            // assert
            const int testVersion         = 1;
            Message   testMesage          = new Message();
            var       deserializedMessage = new FakeMessage(testVersion);
            var       handlerMock         = new Mock <IMessageHandler>();
            var       messageSerialzier   = new Mock <IMessageSerializer>();

            messageSerialzier.Setup(x => x.Deserialize <IMessage>(It.IsAny <Message>()))
            .Returns(deserializedMessage);
            var versionChecker = new Mock <IVersionChecker>();

            versionChecker.Setup(x => x.Check(It.IsAny <int>(), It.IsAny <Type>())).Callback <int, Type>((y, t) =>
            {
            });
            var handler = new MessageProcessor(handlerMock.Object, versionChecker.Object, messageSerialzier.Object);

            // act
            await handler.ProcessMessagesAsync(testMesage, CancellationToken.None);

            // arrange
            versionChecker.Verify(x => x.Check(It.Is <int>(ver => ver == testVersion), It.Is <Type>(type => type == deserializedMessage.GetType())), Times.Once);
            messageSerialzier.Verify(x => x.Deserialize <IMessage>(It.Is <Message>(msg => msg == testMesage)), Times.Once);
        }
예제 #11
0
        public void if_none_are_provided_check_for_dataContext()
        {
            var source = new Button {
                DataContext = new object()
            };

            sourceNode.Stub(x => x.UIElement).Return(source);

            var message = new FakeMessage();

            message.Initialize(sourceNode);

            var element = new ControlHost();

            handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("datacontext", typeof(object)),
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, null
                );


            result.Length.ShouldBe(1);
            result.Contains(source.DataContext).ShouldBeTrue();
        }
예제 #12
0
        public void ItShouldGetConsumersFromTheContainer()
        {
            using (var container = new Container()) {
                var consumerAssemblies = new[] { GetType().Assembly };
                container.Register(typeof(Consumes <> .All), consumerAssemblies);
                var endpointUri = new Uri("loopback://localhost/queue");
                container.RegisterSingleton(() =>
                                            ServiceBusFactory.New(sbc => {
                    sbc.ReceiveFrom(endpointUri);
                    sbc.Subscribe(subs => {
                        // ReSharper disable AccessToDisposedClosure
                        subs.LoadFrom(container);
                        // ReSharper restore AccessToDisposedClosure
                    });
                }));
                container.Verify();

                var bus     = container.GetInstance <IServiceBus>();
                var message = new FakeMessage {
                    Moment = DateTime.Now
                };
                bus.GetEndpoint(endpointUri).Send(message);

                Thread.Sleep(100);
                Assert.Equal(1, FakeMessage.MessageConsumedCount);
            }
        }
예제 #13
0
        public void should_resolve_special_parameter_dataContext()
        {
            const string param1 = "$dataContext";
            var          source = new Button {
                DataContext = new object()
            };

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection <Parameter>
                {
                    new Parameter {
                        Value = param1
                    },
                }
            };

            sourceNode.Stub(x => x.UIElement).Return(source);
            message.Initialize(sourceNode);

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("param1", typeof(object))
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, null
                );

            result.Length.ShouldBe(1);
            result.Contains(source.DataContext).ShouldBeTrue();
        }
예제 #14
0
        public void Start_ConsumingPublishesConsumedMessageToMediator()
        {
            //Arrange
            var fakeMessage             = new FakeMessage("some-property-value");
            var cancellationTokenSource = new CancellationTokenSource();
            var mockMediator            = new Mock <IMediator>();
            var stubMapper      = Mock.Of <IMapper>();
            var serviceProvider = BuildServiceProvider(mockMediator.Object);
            var stubLogger      = Mock.Of <ILogger <KafkaTopicMessageConsumer <FakeAvro, FakeMessage> > >();
            var stubConsumer    = new Mock <IConsumer <string, FakeAvro> >();

            stubConsumer
            .Setup(x => x.Consume(It.IsAny <CancellationToken>()))
            .Returns(BuildFakeConsumeResult(fakeMessage));
            var stubMessageConsumerBuilder = new Mock <IKafkaConsumerBuilder <FakeAvro> >();

            stubMessageConsumerBuilder
            .Setup(x => x.Build())
            .Returns(stubConsumer.Object);

            //Act
            var sut = new KafkaTopicMessageConsumer <FakeAvro, FakeMessage>(stubLogger, stubMessageConsumerBuilder.Object, serviceProvider, stubMapper);

            //Running inside another thread to use "cancellationTokenSource.Cancel()"
            Task.Run(() => sut.StartConsuming("fake-messages", cancellationTokenSource.Token));
            Task.Delay(500).Wait();
            cancellationTokenSource.Cancel();

            //Assert
            mockMediator.Verify(x =>
                                x.Publish(
                                    It.Is <object>(i => i.GetType() == typeof(MessageNotification <FakeMessage>)),
                                    It.IsAny <CancellationToken>()));
        }
예제 #15
0
        public void should_resolve_special_parameter_parameter()
        {
            const string param1  = "$parameter";
            var          context = new object();

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection <Parameter>
                {
                    new Parameter {
                        Value = param1
                    },
                }
            };

            message.Initialize(sourceNode);

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("param1", typeof(object))
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, context
                );

            result.Length.ShouldBe(1);
            result.Contains(context).ShouldBeTrue();
        }
예제 #16
0
        public void methods_with_parameters_equal_to_those_provided_should_yield_provided()
        {
            const string param1 = "a string";
            const int    param2 = 56;

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection <Parameter>
                {
                    new Parameter {
                        Value = param1
                    },
                    new Parameter {
                        Value = param2
                    }
                }
            };

            message.Initialize(sourceNode);

            var requirements = new List <RequiredParameter>
            {
                new RequiredParameter("param1", typeof(string)),
                new RequiredParameter("param2", typeof(int))
            };

            var result = binder.DetermineParameters(
                message, requirements, handlingNode, null
                );

            result.Length.ShouldBe(2);
            result.Contains(param1).ShouldBeTrue();
            result.Contains(param2).ShouldBeTrue();
        }
        public void ConstructorReturnsMessageNotification()
        {
            var fakeMessage = new FakeMessage("some-key", "some-property");

            var sut = new MessageNotification <FakeMessage>(fakeMessage);

            Assert.Equal(fakeMessage, sut.Message);
        }
        protected override void given_the_context_of()
        {
            node = Mock <IInteractionNode>();

            element = new FakeElement();
            message = new FakeMessage {
                AvailabilityEffect = Mock <IAvailabilityEffect>()
            };
        }
예제 #19
0
 public override void Context()
 {
     base.Context();
     SubscriptionManager.subscribe <FakeMessage>(x =>
     {
         _wasCalled        = true;
         _localFakeMessage = x;
     }, null, null);
 }
        public void cannot_process_a_non_action_message()
        {
            Assert.Throws <CaliburnException>(() => {
                var context = new object();
                var message = new FakeMessage();

                handler.Process(message, context);
            });
        }
 public override void Context()
 {
     base.Context();
     SubscriptionManager.subscribe<FakeMessage>(x =>
         {
             _wasCalled = true;
             _localFakeMessage = x;
         }, null, null);
 }
        public void cannot_update_trigger_for_a_non_action_message()
        {
            Assert.Throws <CaliburnException>(() => {
                var message = new FakeMessage();
                var trigger = Mock <IMessageTrigger>();
                trigger.Stub(x => x.Message).Return(message);

                handler.UpdateAvailability(trigger);
            });
        }
예제 #23
0
        public void Constructor_ReturnsMessageNotification()
        {
            //Arrange
            var fakeMessage = new FakeMessage("some-property");

            //Act
            var sut = new MessageNotification <FakeMessage>(fakeMessage);

            //Assert
            Assert.Equal(fakeMessage, sut.Message);
        }
예제 #24
0
 public override void Context()
 {
     base.Context();
     SubscriptionManager.subscribe <FakeMessage>(m =>
     {
         //stuff is happening
         Thread.Sleep(2000);
         _wasCalled        = true;
         _localFakeMessage = m;
         Console.WriteLine("event complete");
     }, null, null);
 }
예제 #25
0
        public void TestPacketContentUnencrypted()
        {
            byte[]? content;
            using (var message = new FakeMessage {
                Text = text, MessageFlags = MessageFlags.Unencrypted
            })
                content = message.PacketContent;

            Assert.IsNotNull(content);
            using var buffer = new PacketBuffer(content);
            Assert.AreEqual(text, buffer.ReadMediumString());
        }
예제 #26
0
        public void tryexecute_chooses_the_right_path()
        {
            var fakeMessage    = new FakeMessage();
            var consumerCalled = false;
            var fakeEnvelope   = new Envelope();

            Services.Inject(fakeEnvelope);
            Services.PartialMockTheClassUnderTest();

            ClassUnderTest.TryExecute(fakeMessage, _ => consumerCalled = true);
            Assert.IsTrue(consumerCalled);
            ClassUnderTest.AssertWasNotCalled(x => x.Execute(fakeMessage));
        }
예제 #27
0
        public void can_process_message_if_node_has_handler()
        {
            var context = new object();
            var message = new FakeMessage();
            var handler = Mock <IRoutedMessageHandler>();

            handler.Expect(x => x.Initialize(node));
            handler.Expect(x => x.Handles(message)).Return(true);
            handler.Expect(x => x.Process(message, context));

            node.RegisterHandler(handler);
            node.ProcessMessage(message, context);
        }
 public void Send_Null_Message_Exception()
 {
     using (var test = CreateQueue())
     {
         Assert.Throws <ArgumentNullException>(
             delegate
         {
             FakeMessage message = null;
             // ReSharper disable once ExpressionIsAlwaysNull
             test.Send(message);
         });
     }
 }
 private static ConsumeResult <string, string> BuildFakeConsumeResult(FakeMessage fakeMessage)
 {
     return(new ConsumeResult <string, string>
     {
         Message = new Message <string, string>
         {
             Value = JsonConvert.SerializeObject(fakeMessage),
             Headers = new Headers
             {
                 { "message-type", Encoding.UTF8.GetBytes(fakeMessage.GetType().AssemblyQualifiedName) }
             }
         }
     });
 }
예제 #30
0
 private static ConsumeResult <string, FakeAvro> BuildFakeConsumeResult(FakeMessage fakeMessage)
 {
     return(new ConsumeResult <string, FakeAvro>
     {
         Message = new Message <string, FakeAvro>
         {
             Value = fakeMessage,
             Headers = new Headers
             {
                 { "message-type", Encoding.UTF8.GetBytes(fakeMessage.GetType().AssemblyQualifiedName) }
             }
         }
     });
 }
예제 #31
0
        public void can_determine_if_a_message_is_handled()
        {
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();

            handler.Expect(x => x.Initialize(_node));
            handler.Expect(x => x.Handles(message)).Return(true);

            _node.RegisterHandler(handler);

            bool result = _node.Handles(message);

            Assert.That(result, Is.True);
        }
예제 #32
0
        public void Serialize_Message_ReturnsConfiguratedMessage()
        {
            // arrange
            var serializer = new MessageSerializer();
            var message    = new FakeMessage(1);

            // act
            var brokeredMessage = serializer.Serialize(message);
            var body            = new MemoryStream(brokeredMessage.Body);

            // assert
            Assert.Equal(brokeredMessage.UserProperties[CustomMessageProperties.MessageTypeProperty], message.GetType().FullName);
            Assert.NotNull(body);
        }
예제 #33
0
        public void can_determine_if_a_message_is_handled()
        {
            var message = new FakeMessage();
            var handler = Mock <IRoutedMessageHandler>();

            handler.Expect(x => x.Initialize(node));
            handler.Expect(x => x.Handles(message)).Return(true);

            node.RegisterHandler(handler);

            bool result = node.Handles(message);

            result.ShouldBeTrue();
        }
예제 #34
0
        public void can_update_availability_if_node_has_handler()
        {
            var message = new FakeMessage();
            var handler = Mock <IRoutedMessageHandler>();
            var trigger = Mock <IMessageTrigger>();

            handler.Expect(x => x.Initialize(node));
            trigger.Expect(x => x.Message).Return(message);
            handler.Expect(x => x.Handles(message)).Return(true);
            handler.Expect(x => x.UpdateAvailability(trigger));

            node.RegisterHandler(handler);

            node.UpdateAvailability(trigger);
        }
예제 #35
0
        public void will_throw_exception_if_processing_node_is_not_found()
        {
            Assert.Throws <CaliburnException>(() => {
                var context = new object();
                var message = new FakeMessage();
                var handler = Mock <IRoutedMessageHandler>();

                node.RegisterHandler(handler);

                handler.Expect(x => x.Handles(message)).Return(false);
                controller.Expect(x => x.GetParent(element)).Return(null);

                node.ProcessMessage(message, context);
            });
        }
 public override void Context()
 {
     Message = new FakeMessage("yo", 12);
     SubscriptionManager = new MessageSubscriptionManagerService(new EventAggregator());
 }
 public override void Context()
 {
     base.Context();
     SubscriptionManager.subscribe<FakeMessage>(m =>
         {
             //stuff is happening
             Thread.Sleep(2000);
             _wasCalled = true;
             _localFakeMessage = m;
             Console.WriteLine("event complete");
         }, null, null);
 }
        public void should_resolve_special_parameter_parameter()
        {
            const string param1 = "$parameter";
            var context = new object();

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection<Parameter>
                {
                    new Parameter {Value = param1},
                }
            };

            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(object))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, context
                );

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(context));
        }
예제 #39
0
        public void will_throw_exception_if_processing_node_is_not_found()
        {
            var context = new object();
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();

            _node.RegisterHandler(handler);

            handler.Expect(x => x.Handles(message)).Return(false);
            _controller.Expect(x => x.GetParent(_element)).Return(null);

            _node.ProcessMessage(message, context);
        }
예제 #40
0
        public void can_update_availability_if_parent_node_has_handler()
        {
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();
            var parentHandler = Mock<IRoutedMessageHandler>();
            var trigger = Mock<IMessageTrigger>();

            _node.RegisterHandler(handler);
            _parentNode.RegisterHandler(parentHandler);

            trigger.Expect(x => x.Message).Return(message);
            handler.Expect(x => x.Handles(message)).Return(false);
            _controller.Expect(x => x.GetParent(_element)).Return(_parentNode);
            parentHandler.Expect(x => x.Handles(message)).Return(true);
            parentHandler.Expect(x => x.UpdateAvailability(trigger));

            _node.UpdateAvailability(trigger);
        }
        public void if_none_are_provided_check_for_eventArgs()
        {
            var context = EventArgs.Empty;

            var message = new FakeMessage();
            message.Initialize(_sourceNode);

            var element = new ControlHost();
            _handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("eventArgs", typeof(EventArgs)),
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, context
                );

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(context));
        }
        public void if_none_are_provided_check_for_dataContext()
        {
            var source = new Button { DataContext = new object() };

            _sourceNode.Stub(x => x.UIElement).Return(source);

            var message = new FakeMessage();
            message.Initialize(_sourceNode);

            var element = new ControlHost();
            _handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("datacontext", typeof(object)),
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(source.DataContext));
        }
        public void if_none_are_provided_check_for_value()
        {
            var source = new TextBox { Text = "the text" };

            _sourceNode.Stub(x => x.UIElement).Return(source);

            var defaults = Stub<IElementConvention>();

            _conventionManager.Expect(x => x.GetElementConvention(typeof(TextBox)))
                .Return(defaults);

            defaults.Expect(x => x.GetValue(source)).Return(source.Text);

            var message = new FakeMessage();
            message.Initialize(_sourceNode);

            var element = new ControlHost();
            _handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("value", typeof(object)),
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                ); 

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(source.Text));
        }
예제 #44
0
        public void can_process_message_if_node_has_handler()
        {
            var context = new object();
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();

            handler.Expect(x => x.Initialize(_node));
            handler.Expect(x => x.Handles(message)).Return(true);
            handler.Expect(x => x.Process(message, context));

            _node.RegisterHandler(handler);
            _node.ProcessMessage(message, context);
        }
예제 #45
0
        public void will_throw_exception_if_trigger_update_node_is_not_found()
        {
            var trigger = Mock<IMessageTrigger>();
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();

            _node.RegisterHandler(handler);

            trigger.Expect(x => x.Message).Return(message);
            handler.Expect(x => x.Handles(message)).Return(false);
            _controller.Expect(x => x.GetParent(_element)).Return(null);

            _node.UpdateAvailability(trigger);
        }
        public void if_none_are_provided_should_search_the_UI()
        {
            const int param1 = 56;
            const double param2 = 34.0;

            var element = new ControlHost();
            element.SetParam1(param1);
            element.SetParam2(param2);

            _handlingNode.Stub(x => x.UIElement).Return(element).Repeat.Twice();

            var defaults = Mock<IElementConvention>();

            _conventionManager.Expect(x => x.GetElementConvention(typeof(TextBox)))
                .Return(defaults).Repeat.Twice();

            defaults.Expect(x => x.GetValue(Arg<DependencyObject>.Is.Anything)).Return(param1);
            defaults.Expect(x => x.GetValue(Arg<DependencyObject>.Is.Anything)).Return(param2);

            var message = new FakeMessage();

            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(string)),
                new RequiredParameter("param2", typeof(int))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(2));
            Assert.That(result, Has.Member(param1.ToString()));
            Assert.That(result, Has.Member(Convert.ToInt32(param2)));
        }
예제 #47
0
        public void can_update_availability_if_node_has_handler()
        {
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();
            var trigger = Mock<IMessageTrigger>();

            handler.Expect(x => x.Initialize(_node));
            trigger.Expect(x => x.Message).Return(message);
            handler.Expect(x => x.Handles(message)).Return(true);
            handler.Expect(x => x.UpdateAvailability(trigger));

            _node.RegisterHandler(handler);

            _node.UpdateAvailability(trigger);
        }
        public void represents_availability_consistently_through_ICommand_for_non_disable_availability_when_available()
        {
            _message = new FakeMessage {AvailabilityEffect = AvailabilityEffect.Hide};

            var trigger = new GestureMessageTrigger
            {
                Modifiers = ModifierKeys.Alt,
                Key = Key.S,
                Message = _message
            };

            _node.Expect(x => x.UIElement).Return(_element);
            _node.Expect(x => x.UIElement).Return(_element);


            trigger.Attach(_node);
            trigger.UpdateAvailabilty(true);

            Assert.That(_element.IsEnabled);
        }
        public void should_resolve_special_parameter_value()
        {
            const string param1 = "$value";
            var source = new TextBox { Text = "the value" };

            var convention = Mock<IElementConvention>();
            _conventionManager.Expect(x => x.GetElementConvention(typeof(TextBox)))
                .Return(convention);
            convention.Expect(x => x.GetValue(source)).Return(source.Text);

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection<Parameter>
                {
                    new Parameter {Value = param1},
                }
            };

            _sourceNode.Stub(x => x.UIElement).Return(source);
            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(object))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(source.Text));
        }
        public void should_resolve_special_parameter_dataContext()
        {
            const string param1 = "$dataContext";
            var source = new Button { DataContext = new object() };

            var message = new FakeMessage
            {
                Parameters = new FreezableCollection<Parameter>
                {
                    new Parameter {Value = param1},
                }
            };

            _sourceNode.Stub(x => x.UIElement).Return(source);
            message.Initialize(_sourceNode);

            var requirements = new List<RequiredParameter>
            {
                new RequiredParameter("param1", typeof(object))
            };

            var result = _binder.DetermineParameters(
                message, requirements, _handlingNode, null
                );

            Assert.That(result, Has.Length(1));
            Assert.That(result, Has.Member(source.DataContext));
        }
예제 #51
0
        public void can_process_message_if_parent_node_has_handler()
        {
            var context = new object();
            var message = new FakeMessage();
            var handler = Mock<IRoutedMessageHandler>();
            var parentHandler = Mock<IRoutedMessageHandler>();

            _node.RegisterHandler(handler);
            _parentNode.RegisterHandler(parentHandler);

            handler.Expect(x => x.Handles(message)).Return(false);
            _controller.Expect(x => x.GetParent(_element)).Return(_parentNode);
            parentHandler.Expect(x => x.Handles(message)).Return(true);

            parentHandler.Expect(x => x.Process(message, context));

            _node.ProcessMessage(message, context);
        }