public void Umbraco_Route_User_Defined_Controller_Action(string templateName)
		{
			var template = Template.MakeNew(templateName, new User(0));
			var route = RouteTable.Routes["Umbraco_default"];
			var routeData = new RouteData() {Route = route};
			var routingContext = GetRoutingContext("~/dummy-page", template, routeData);
			var docRequest = new PublishedContentRequest(routingContext.UmbracoContext.CleanedUmbracoUrl, routingContext)
				{
					PublishedContent = routingContext.PublishedContentStore.GetDocumentById(routingContext.UmbracoContext, 1172), 
					Template = template
				};

			var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext);

			handler.GetHandlerForRoute(routingContext.UmbracoContext.HttpContext.Request.RequestContext, docRequest);
			Assert.AreEqual("CustomDocument", routeData.Values["controller"].ToString());
			Assert.AreEqual("HomePage", routeData.Values["action"].ToString());
		}
		public void Umbraco_Route_Umbraco_Defined_Controller_Action()
		{
            var template = CreateTemplate("homePage");
			var route = RouteTable.Routes["Umbraco_default"];
			var routeData = new RouteData() { Route = route };
			var routingContext = GetRoutingContext("~/dummy-page", template.Id, routeData);
			var docRequest = new PublishedContentRequest(routingContext.UmbracoContext.CleanedUmbracoUrl, routingContext)
			{
                PublishedContent = routingContext.UmbracoContext.ContentCache.GetById(1174),
				TemplateModel = template
			};

			var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext);

			handler.GetHandlerForRoute(routingContext.UmbracoContext.HttpContext.Request.RequestContext, docRequest);
			Assert.AreEqual("RenderMvc", routeData.Values["controller"].ToString());
            //the route action will still be the one we've asked for because our RenderActionInvoker is the thing that decides
            // if the action matches.
            Assert.AreEqual("homePage", routeData.Values["action"].ToString());
		}
        public void Umbraco_Route_User_Defined_Controller_Action(string templateName)
		{
            // NOTE - here we create templates with crazy aliases... assuming that these
            // could exist in the database... yet creating templates should sanitize
            // aliases one way or another...

            var template = CreateTemplate(templateName);
            var route = RouteTable.Routes["Umbraco_default"];
			var routeData = new RouteData() {Route = route};
			var routingContext = GetRoutingContext("~/dummy-page", template.Id, routeData, true);
			var docRequest = new PublishedContentRequest(routingContext.UmbracoContext.CleanedUmbracoUrl, routingContext)
				{
                    PublishedContent = routingContext.UmbracoContext.ContentCache.GetById(1172), 
					TemplateModel = template
				};

			var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext);

			handler.GetHandlerForRoute(routingContext.UmbracoContext.HttpContext.Request.RequestContext, docRequest);
			Assert.AreEqual("CustomDocument", routeData.Values["controller"].ToString());
		    Assert.AreEqual(
                //global::umbraco.cms.helpers.Casing.SafeAlias(template.Alias),
                template.Alias.ToSafeAlias(),
		        routeData.Values["action"].ToString());
		}