public async Task Process_GivenGetServerVersionContext_ShouldResondWithGetServerVersionContext()
 {
     // arrange
     Setup();
     _mockIHttpLookup.Setup(mc => mc.Download(It.IsAny<string>(),It.IsAny<int>()))
         .Returns(Task.FromResult(new RestResponse() {Content = "<body><header><h1>Everything is fine...</h1></header>Make Coffee, API1, 2.0.1220, 6/10/2016 2:44:36 PM!</body>"} as IRestResponse));
     var messageContext = new MessageContext("what version are we on");
     // action
     await _chatBot.Process(messageContext);
     // assert
     
     messageContext.WaitFor(x => x.LastMessages, x => x.Contains("I will have a look, give me a minute.")).Should().Contain("I will have a look, give me a minute.");
     messageContext.WaitFor(x => x.LastMessages, x => x.Contains("API1")).Should().Contain(x => x.Contains("API1"));
 }
 public async Task Process_GivenInvalidContext_ShouldResondWithGetServerVersionContext()
 {
     // arrange
     Setup();
     _mockIHttpLookup.Setup(mc => mc.Download(It.IsAny<string>(), It.IsAny<int>()))
         .Returns(Task.FromResult(new RestResponse() {} as IRestResponse));
     var messageContext = new MessageContext("what version are we on");
     // action
     await _chatBot.Process(messageContext);
     // assert
     
     messageContext.WaitFor(x => x.LastMessages, x => x.Contains("I will have a look, give me a minute.")).Should().Contain("I will have a look, give me a minute.");
     messageContext.WaitFor(x => x.LastMessages, x => x.Contains("Oops")).Should().Contain(x => x.Contains("Oops"));
 }
        public async Task Process_GivenGetServerVersionContext_ShouldResondWithGetServerVersionContext()
        {
            // arrange
            Setup();
            var restResponse = new RestResponse() { Content = "<body><header><h1>Everything is fine...</h1></header>Make Coffee, API1, 2.0.1219, 6/10/2016 2:44:36 PM!</body>" };
            _mockIHttpLookup.Setup(mc => mc.Download(It.IsAny<string>(), It.IsAny<int>()))
                .Returns(Task.FromResult(restResponse as IRestResponse));
            var messageContext = new MessageContext("monitor server versions");
            // action
            await _chatBot.Process(messageContext);
            // assert

            messageContext.WaitFor(x => x.LastMessages, x => x.Contains("Scanning servers.")).Should().Contain("Scanning servers.");
            await Task.Delay(500);
            restResponse.Content = "<body><header><h1>Everything is fine...</h1></header>Make Coffee, API1, 2.0.1220, 6/10/2016 2:44:36 PM!</body>" ;
            messageContext.WaitFor(x => x.LastMessages, x => x.Contains("2.0.1220"),5000).Should().Contain(x => x.Contains("2.0.1220"));
        }