コード例 #1
0
        public void It_does_not_return_paths_with_trailing_slash_when_configured_via_route_attribute()
        {
            // Arrange
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(c =>
            {
                c.AddRoutesFromController <TrailingSlashesController>();
                c.UseLowercaseRoutes  = true;
                c.AppendTrailingSlash = true;
            });

            var route = routes.Cast <Route>().ElementAt(2);

            Assert.That(route, Is.Not.Null);

            // Act
            var requestContext = MockBuilder.BuildRequestContext();
            var pathData       = route.GetVirtualPath(requestContext, new RouteValueDictionary
            {
                { "queryString", "WhatTimeIsIt" }
            });

            // Assert
            Assert.That(pathData, Is.Not.Null);
            Assert.That(pathData.VirtualPath, Is.EqualTo("trailing-slash/route-override-false?queryString=WhatTimeIsIt"));
        }
コード例 #2
0
        public void It_returns_routes_with_everything_lowered_including_params_and_query_strings_when_so_configured()
        {
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(c =>
            {
                c.AddRoutesFromController <LowercaseUrlController>();
                c.UseLowercaseRoutes           = true;
                c.PreserveCaseForUrlParameters = false;
            });

            var route = routes.Cast <AttributeRoute>().FirstOrDefault();

            Assert.That(route, Is.Not.Null);

            var requestContext = MockBuilder.BuildRequestContext();

            var pathData = route.GetVirtualPath(requestContext, new RouteValueDictionary
            {
                { "userName", "CharlieChan" },
                { "queryString", "WhatTimeIsIt" }
            });

            Assert.That(pathData, Is.Not.Null);
            Assert.That(pathData.VirtualPath, Is.EqualTo("lowercaseurl/hello/charliechan/goodbye?queryString=WhatTimeIsIt"));
        }
コード例 #3
0
        public void It_returns_translated_routes()
        {
            var translations = new FluentTranslationProvider();

            translations.AddTranslations().ForController <TranslationController>()
            .AreaUrl(new Dictionary <string, string>
            {
                { "es", "es-Area" }
            })
            .RoutePrefixUrl(new Dictionary <string, string>
            {
                { "es", "es-Prefix" }
            })
            .RouteUrl(c => c.Index(), new Dictionary <string, string>
            {
                { "es", "es-Index" }
            });

            translations.AddTranslations()
            .ForKey("CustomAreaKey", new Dictionary <string, string>
            {
                { "es", "es-CustomArea" }
            })
            .ForKey("CustomPrefixKey", new Dictionary <string, string>
            {
                { "es", "es-CustomPrefix" }
            })
            .ForKey("CustomRouteKey", new Dictionary <string, string>
            {
                { "es", "es-CustomIndex" }
            });

            RouteTable.Routes.Clear();
            RouteTable.Routes.MapAttributeRoutes(config =>
            {
                config.AddRoutesFromController <TranslationController>();
                config.AddRoutesFromController <TranslationWithCustomKeysController>();
                config.AddTranslationProvider(translations);
            });

            var requestContext = MockBuilder.BuildRequestContext();

            // Default culture
            var urlHelper = new UrlHelper(requestContext, RouteTable.Routes);

            Assert.That(urlHelper.Action("Index", "Translation", new { area = "Area" }),
                        Is.EqualTo("/Area/Prefix/Index"));

            // es-ES culture
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-ES");
            Assert.That(urlHelper.Action("Index", "Translation", new { area = "Area" }),
                        Is.EqualTo("/es-Area/es-Prefix/es-Index"));

            // es culture
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("es");
            Assert.That(urlHelper.Action("Index", "Translation", new { area = "Area" }),
                        Is.EqualTo("/es-Area/es-Prefix/es-Index"));
        }
コード例 #4
0
        public void It_returns_routes_with_everything_lowered_except_params_and_query_strings_when_configured_via_route_attribute()
        {
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(c => c.AddRoutesFromController <LowercaseUrlController>());

            var route = routes.Cast <Route>().ElementAt(3);

            Assert.That(route, Is.Not.Null);

            var requestContext = MockBuilder.BuildRequestContext();

            var pathData = route.GetVirtualPath(requestContext, new RouteValueDictionary
            {
                { "routeParam", "CharlieChan" },
                { "queryString", "WhatTimeIsIt" }
            });

            Assert.That(pathData, Is.Not.Null);
            Assert.That(pathData.VirtualPath, Is.EqualTo("lowercaseurl/lowercase-preserve-url-param-case-override/CharlieChan?queryString=WhatTimeIsIt"));
        }
コード例 #5
0
        public void It_returns_routes_with_everything_not_lowered_when_configured_via_route_attribute()
        {
            // Arrange
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(c =>
            {
                c.AddRoutesFromController <LowercaseUrlController>();
                c.UseLowercaseRoutes = true;
            });

            var route = routes.Cast <Route>().ElementAt(2);

            Assert.That(route, Is.Not.Null);

            // Act
            var requestContext = MockBuilder.BuildRequestContext();
            var pathData       = route.GetVirtualPath(requestContext, new RouteValueDictionary());

            // Assert
            Assert.That(pathData, Is.Not.Null);
            Assert.That(pathData.VirtualPath, Is.EqualTo("LowercaseUrl/Uppercase-Override"));
        }