public void HandleRequest_SendsRequestToFirstMatchingRoute()
        {
            var routes = new List <IRoute>
            {
                MockRepository.GenerateStub <IRoute>(),
                MockRepository.GenerateStub <IRoute>(),
                MockRepository.GenerateStub <IRoute>()
            };

            routes[0].Stub(x => x.IsMatch("/test.html")).Return(false);
            routes[1].Stub(x => x.IsMatch("/test.html")).Return(true);
            routes[2].Stub(x => x.IsMatch("/test.html")).Return(true);

            var context = Mocked.HttpContext()
                          .WithUrl("http://localhost/test.html")
                          .Mock;

            context.Stub(x => x.ServerInfo).Return(MockRepository.GenerateStub <IServerInfo>());
            context.ServerInfo.Stub(x => x.Routes).Return(routes);

            var handler = new RouteRequestHandler();

            handler.HandleRequest(context);

            routes[1].AssertWasCalled(x => x.HandleRequest(context));
        }
        public void HandleRequest_WithNoMatchingRoute_ReturnsFalse()
        {
            var routes = new List <IRoute> {
                MockRepository.GenerateStub <IRoute>()
            };

            var context = Mocked.HttpContext()
                          .WithUrl("http://localhost/test.html")
                          .Mock;

            context.Stub(x => x.ServerInfo).Return(MockRepository.GenerateStub <IServerInfo>());
            context.ServerInfo.Stub(x => x.Routes).Return(routes);

            var handler = new RouteRequestHandler();
            var result  = handler.HandleRequest(context);

            Assert.False(result);
        }