public void ErrorPageProcessor_ProcessRequest_WhenControllerNotFound_Throws()
        {
            var processor = new ErrorPageProcessor();
            var mockControllerFactory = new Mock<IControllerFactory>();
            mockControllerFactory
                .Setup(m => m.CreateController(It.IsAny<RequestContext>(), It.IsAny<string>()))
                .Returns<IController>(null);

            TestDelegate act = () =>
            {
                processor.ProcessRequest(new FakeHttpContext(), mockControllerFactory.Object, "no-controller");
            };

            Assert.That(act, Throws.InvalidOperationException.With.Message.EqualTo("Cannot find a controller with name 'no-controller'."));
        }
        public void ErrorPageProcessor_ProcessRequest_WhenControllerFound_ExecutesController()
        {
            var processor = new ErrorPageProcessor();
            var mockController = new Mock<IController>();
            var controller = mockController.Object;
            var mockControllerFactory = new Mock<IControllerFactory>();
            mockControllerFactory
                .Setup(m => m.CreateController(It.IsAny<RequestContext>(), It.IsAny<string>()))
                .Returns(controller);

            processor.ProcessRequest(new FakeHttpContext(), mockControllerFactory.Object, "controller");

            mockController.Verify(m => m.Execute(It.IsAny<RequestContext>()), Times.Once);
            mockControllerFactory.Verify(m => m.ReleaseController(controller), Times.Once);
        }