Esempio n. 1
0
        public string AddMessage(string direction, string messageText, bool insertAtBeginning)
        {
            ThenAddMessage then = new ThenAddMessage()
            {
                Direction         = (DataDirection)GetStringAsEnum <DataDirection>(direction),
                MessageText       = VariableString.GetAsVariableString(messageText, false),
                InsertAtBeginning = insertAtBeginning
            };

            return(then.Perform(eventInfo).ToString());
        }
Esempio n. 2
0
        public void ThenAddMessage_PerformTest()
        {
            string    messageText       = "blah blah blah";
            Variables toTargetVariables = new Variables();
            Variables toOriginVariables = new Variables();

            Mock <EventInfo> mockEventInfo = new Mock <EventInfo>()
            {
                CallBase = true
            };
            Mock <ProxyConnection> mockProxyConnection   = new Mock <ProxyConnection>(It.IsAny <ProxyHost>(), It.IsAny <ProxyInfo>(), It.IsAny <TcpClient>());
            Mock <VariableString>  mockMessageTextString = new Mock <VariableString>(It.IsAny <string>(), null);
            Mock <RulesEngine>     mockRulesEngine       = new Mock <RulesEngine>()
            {
                CallBase = true
            };
            Mock <MessageQueue <EventInfo> > mockMessageQueue = new Mock <MessageQueue <EventInfo> >();

            EventInfo                eventInfo         = mockEventInfo.Object;
            VariableString           messageTextString = mockMessageTextString.Object;
            RulesEngine              rulesEngine       = mockRulesEngine.Object;
            MessageQueue <EventInfo> messageQueue      = mockMessageQueue.Object;
            ProxyConnection          proxyConnection   = mockProxyConnection.Object;

            mockMessageTextString.Setup(mock => mock.GetText(It.IsAny <Variables>())).Returns(messageText);
            mockProxyConnection.Setup(mock => mock.ToTargetConnectionVariables).Returns(toTargetVariables);
            mockProxyConnection.Setup(mock => mock.ToOriginConnectionVariables).Returns(toOriginVariables);
            mockRulesEngine.Setup(mock => mock.Queue).Returns(messageQueue);
            mockEventInfo.Setup(mock => mock.Engine).Returns(rulesEngine);
            mockEventInfo.Setup(mock => mock.ProxyConnection).Returns(proxyConnection);

            var testCases = new[]
            {
                new
                {
                    Direction         = DataDirection.Origin,
                    InsertAtBeginning = true,
                    ExpectedVariables = toOriginVariables
                },
                new
                {
                    Direction         = DataDirection.Origin,
                    InsertAtBeginning = false,
                    ExpectedVariables = toOriginVariables
                },
                new
                {
                    Direction         = DataDirection.Target,
                    InsertAtBeginning = true,
                    ExpectedVariables = toTargetVariables
                },
                new
                {
                    Direction         = DataDirection.Target,
                    InsertAtBeginning = false,
                    ExpectedVariables = toTargetVariables
                }
            };

            foreach (var testCase in testCases)
            {
                ThenAddMessage then = new ThenAddMessage()
                {
                    Direction         = testCase.Direction,
                    InsertAtBeginning = testCase.InsertAtBeginning,
                    MessageText       = messageTextString
                };


                mockMessageQueue.Reset();

                if (testCase.InsertAtBeginning)
                {
                    mockMessageQueue.Setup(mock => mock.AddFirst(It.IsAny <EventInfo>())).Callback((EventInfo eventInfoParam) =>
                    {
                        Assert.AreEqual(testCase.ExpectedVariables, eventInfoParam.Variables);
                        Assert.AreEqual(messageText, eventInfoParam.Message.RawText);
                    });

                    Assert.AreEqual(ThenResponse.Continue, then.Perform(eventInfo));

                    mockMessageQueue.Verify(mock => mock.AddFirst(It.IsAny <EventInfo>()), Times.Once);
                }
                else
                {
                    mockMessageQueue.Setup(mock => mock.AddLast(It.IsAny <EventInfo>())).Callback((EventInfo eventInfoParam) =>
                    {
                        Assert.AreEqual(testCase.ExpectedVariables, eventInfoParam.Variables);
                        Assert.AreEqual(messageText, eventInfoParam.Message.RawText);
                    });

                    Assert.AreEqual(ThenResponse.Continue, then.Perform(eventInfo));

                    mockMessageQueue.Verify(mock => mock.AddLast(It.IsAny <EventInfo>()), Times.Once);
                }
            }
        }