public void GetVirtualPathUsesCurrentValuesNotInRouteToMatch() { // Arrange HttpContext context = GetHttpContext("/app", null, null); TemplateRoute r1 = CreateRoute( "ParameterMatching.mvc/{Action}/{product}", new RouteValueDictionary(new { Controller = "ParameterMatching", product = (string)null }), null); TemplateRoute r2 = CreateRoute( "{controller}.mvc/{action}", new RouteValueDictionary(new { Action = "List" }), new RouteValueDictionary(new { Controller = "Action|Bank|Overridden|DerivedFromAction|OverrideInvokeActionAndExecute|InvalidControllerName|Store|HtmlHelpers|(T|t)est|UrlHelpers|Custom|Parent|Child|TempData|ViewFactory|LocatingViews|AccessingDataInViews|ViewOverrides|ViewMasterPage|InlineCompileError|CustomView" }), null); var rd = CreateRouteData(); rd.Values.Add("controller", "Bank"); rd.Values.Add("Action", "List"); var valuesDictionary = CreateRouteValueDictionary(); valuesDictionary.Add("action", "AttemptLogin"); // Act for first route var vpd = r1.GetVirtualPath(context, valuesDictionary); // Assert Assert.NotNull(vpd); Assert.Equal<string>("ParameterMatching.mvc/AttemptLogin", vpd.VirtualPath); // Act for second route vpd = r2.GetVirtualPath(context, valuesDictionary); // Assert Assert.NotNull(vpd); Assert.Equal<string>("Bank.mvc/AttemptLogin", vpd.VirtualPath); }
public void GetVirtualPathWithDataTokensCopiesThemFromRouteToVirtualPathData() { // Arrange HttpContext context = GetHttpContext("/app", null, null); TemplateRoute r = CreateRoute("{controller}/{action}", null, null, new RouteValueDictionary(new { foo = "bar", qux = "quux" })); var rd = CreateRouteData(); rd.Values.Add("controller", "home"); rd.Values.Add("action", "index"); var valuesDictionary = CreateRouteValueDictionary(); // Act var vpd = r.GetVirtualPath(context, valuesDictionary); // Assert Assert.NotNull(vpd); Assert.Equal<string>("home/index", vpd.VirtualPath); Assert.Equal(r, vpd.Route); Assert.Equal<int>(2, vpd.DataTokens.Count); Assert.Equal("bar", vpd.DataTokens["foo"]); Assert.Equal("quux", vpd.DataTokens["qux"]); }