public void ChatBotResponseTest(string message, bool shoudRespond)
        {
            var service = new Mock <IRuleService>();

            service.Setup(s => s.GetApplicableRuleResult(It.IsAny <string>())).Returns(string.Empty);

            var chatbot = new Mock <IChatBotProvider>();

            chatbot.Setup(s => s.Think(It.IsAny <string>())).Returns(shoudRespond ? "hello!" : null);

            var skypeCommand = new Mock <ISkypeCommandProvider>();

            skypeCommand.Setup(s => s.GetCommand(It.IsAny <string>())).Returns((ISkypeCommand)null);

            var  handleMessageService = new HandleMessageService(service.Object, chatbot.Object, skypeCommand.Object);
            bool responded            = false;

            handleMessageService.HandleIncomeMessage("testsource", new SkypeMessage {
                Message = message
            }, (s, m) =>
            {
                Assert.IsNotEmpty(m);
                responded = true;
            });
            Assert.AreEqual(responded, shoudRespond);
        }
        public void TestRallyLinkCommand(string command, string response)
        {
            var service = new Mock <IRuleService>();

            service.Setup(s => s.GetApplicableRuleResult(It.IsAny <string>())).Returns(string.Empty);

            var chatbot = new Mock <IChatBotProvider>();

            chatbot.Setup(s => s.Think(It.IsAny <string>())).Returns((string)null);

            var handleMessageService = new HandleMessageService(service.Object, chatbot.Object, new SkypeCommandProvider());

            handleMessageService.HandleIncomeMessage("testsource", new SkypeMessage {
                Message = command
            }, (s, m) =>
            {
                Assert.IsNotEmpty(m);
                Assert.AreEqual(m, response);
            });
        }