public void GetVirtualPath_NoTranslationExistsForThreadCulture_ReturnsNeutralLocalizationRoute()
		{
			using (ShimsContext.Create())
			{
				// Arrange
				Thread.CurrentThread.CurrentUICulture = new CultureInfo("es");

				LocalizationCollectionRoute localizationCollectionRoute =
					new LocalizationCollectionRoute(new HttpRoute("Home",
						new HttpRouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new HttpRouteValueDictionary(),
						new HttpRouteValueDictionary(), null));

				PrivateObject privateObject = new PrivateObject(localizationCollectionRoute);

				IDictionary<string, LocalizationRoute> routes =
					(IDictionary<string, LocalizationRoute>)privateObject.GetProperty("LocalizedRoutesContainer");

				ShimLocalizationRoute localizationRouteNeutral =
					new ShimLocalizationRoute(new LocalizationRoute("Welcome",
						new HttpRouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new HttpRouteValueDictionary(),
						new HttpRouteValueDictionary(), null, string.Empty));

				(new ShimHttpRoute(localizationRouteNeutral)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
					(requestContext, values) => new HttpVirtualPathData(localizationRouteNeutral.Instance, "Welcome");

				routes[string.Empty] = localizationRouteNeutral;

				ShimLocalizationRoute localizationRouteEnglish =
					new ShimLocalizationRoute(new LocalizationRoute("Welcome",
						new HttpRouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new HttpRouteValueDictionary(),
						new HttpRouteValueDictionary(), null, "en"));

				(new ShimHttpRoute(localizationRouteEnglish)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
					(requestContext, values) => new HttpVirtualPathData(localizationRouteEnglish.Instance, "Welcome");

				routes["en"] = localizationRouteEnglish;

				ShimLocalizationRoute localizationRouteGerman =
					new ShimLocalizationRoute(new LocalizationRoute("Willkommen",
						new HttpRouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new HttpRouteValueDictionary(),
						new HttpRouteValueDictionary(), null, "de"));

				routes["de"] = localizationRouteGerman;

				(new ShimHttpRoute(localizationRouteGerman)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
					(requestContext, values) => new HttpVirtualPathData(localizationRouteGerman.Instance, "Willkommen");

				// Act
				IHttpVirtualPathData virtualPathData = localizationCollectionRoute.GetVirtualPath(null,
					new HttpRouteValueDictionary());

				// Assert
				Assert.AreEqual(virtualPathData.Route, localizationRouteNeutral.Instance);
			}
		}
		public void GetVirtualPath_OverriddenCultureByRouteDictionaryThatDoesNotExist_ReturnsNeutralLocalizationRoute()
		{
			using (ShimsContext.Create())
			{
				// Arrange
				Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

				LocalizationCollectionRoute localizationCollectionRoute =
					new LocalizationCollectionRoute(new Route("Home",
						new RouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new RouteValueDictionary(),
						new RouteValueDictionary(), null));

				PrivateObject privateObject = new PrivateObject(localizationCollectionRoute);

				IDictionary<string, LocalizationRoute> routes =
					(IDictionary<string, LocalizationRoute>)privateObject.GetProperty("LocalizedRoutesContainer");

				ShimLocalizationRoute localizationRouteNeutral =
					new ShimLocalizationRoute(new LocalizationRoute("Welcome",
						new RouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new RouteValueDictionary(),
						new RouteValueDictionary(), null, string.Empty));

				(new ShimRoute(localizationRouteNeutral)).GetVirtualPathRequestContextRouteValueDictionary =
					(requestContext, values) => new VirtualPathData(localizationRouteNeutral, "Welcome");

				routes[string.Empty] = localizationRouteNeutral;

				ShimLocalizationRoute localizationRouteEnglish =
					new ShimLocalizationRoute(new LocalizationRoute("Welcome",
						new RouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new RouteValueDictionary(),
						new RouteValueDictionary(), null, "en"));

				(new ShimRoute(localizationRouteEnglish)).GetVirtualPathRequestContextRouteValueDictionary =
					(requestContext, values) => new VirtualPathData(localizationRouteEnglish, "Welcome");

				routes["en"] = localizationRouteEnglish;

				ShimLocalizationRoute localizationRouteGerman =
					new ShimLocalizationRoute(new LocalizationRoute("Willkommen",
						new RouteValueDictionary() { { "controller", "Home" }, { "action", "Index" } }, new RouteValueDictionary(),
						new RouteValueDictionary(), null, "de"));

				routes["de"] = localizationRouteGerman;

				(new ShimRoute(localizationRouteGerman)).GetVirtualPathRequestContextRouteValueDictionary =
					(requestContext, values) => new VirtualPathData(localizationRouteGerman, "Willkommen");

				// Act
				VirtualPathData virtualPathData = localizationCollectionRoute.GetVirtualPath(null,
					new RouteValueDictionary() { { "Culture", "es" } });

				// Assert
				Assert.AreEqual(virtualPathData.Route, localizationRouteNeutral.Instance);
			}
		}
コード例 #3
0
        public void GetVirtualPath_OverriddenCultureByRouteDictionaryThatDoesNotExist_ReturnsNeutralLocalizationRoute()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

                LocalizationCollectionRoute localizationCollectionRoute =
                    new LocalizationCollectionRoute(new Route("Home",
                                                              new RouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new RouteValueDictionary(),
                                                              new RouteValueDictionary(), null));

                PrivateObject privateObject = new PrivateObject(localizationCollectionRoute);

                IDictionary <string, LocalizationRoute> routes =
                    (IDictionary <string, LocalizationRoute>)privateObject.GetProperty("LocalizedRoutesContainer");

                ShimLocalizationRoute localizationRouteNeutral =
                    new ShimLocalizationRoute(new LocalizationRoute("Welcome",
                                                                    new RouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new RouteValueDictionary(),
                                                                    new RouteValueDictionary(), null, string.Empty));

                (new ShimRoute(localizationRouteNeutral)).GetVirtualPathRequestContextRouteValueDictionary =
                    (requestContext, values) => new VirtualPathData(localizationRouteNeutral, "Welcome");

                routes[string.Empty] = localizationRouteNeutral;

                ShimLocalizationRoute localizationRouteEnglish =
                    new ShimLocalizationRoute(new LocalizationRoute("Welcome",
                                                                    new RouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new RouteValueDictionary(),
                                                                    new RouteValueDictionary(), null, "en"));

                (new ShimRoute(localizationRouteEnglish)).GetVirtualPathRequestContextRouteValueDictionary =
                    (requestContext, values) => new VirtualPathData(localizationRouteEnglish, "Welcome");

                routes["en"] = localizationRouteEnglish;

                ShimLocalizationRoute localizationRouteGerman =
                    new ShimLocalizationRoute(new LocalizationRoute("Willkommen",
                                                                    new RouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new RouteValueDictionary(),
                                                                    new RouteValueDictionary(), null, "de"));

                routes["de"] = localizationRouteGerman;

                (new ShimRoute(localizationRouteGerman)).GetVirtualPathRequestContextRouteValueDictionary =
                    (requestContext, values) => new VirtualPathData(localizationRouteGerman, "Willkommen");

                // Act
                VirtualPathData virtualPathData = localizationCollectionRoute.GetVirtualPath(null,
                                                                                             new RouteValueDictionary()
                {
                    { "Culture", "es" }
                });

                // Assert
                Assert.AreEqual(virtualPathData.Route, localizationRouteNeutral.Instance);
            }
        }
        public void GetVirtualPath_TranslationExistsForThreadCulture_ReturnsTranslatedLocalizationRoute()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

                LocalizationCollectionRoute localizationCollectionRoute =
                    new LocalizationCollectionRoute(new HttpRoute("Home",
                                                                  new HttpRouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new HttpRouteValueDictionary(),
                                                                  new HttpRouteValueDictionary(), null));

                PrivateObject privateObject = new PrivateObject(localizationCollectionRoute);

                IDictionary <string, LocalizationRoute> routes =
                    (IDictionary <string, LocalizationRoute>)privateObject.GetProperty("LocalizedRoutesContainer");

                ShimLocalizationRoute localizationRouteNeutral =
                    new ShimLocalizationRoute(new LocalizationRoute("Welcome",
                                                                    new HttpRouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new HttpRouteValueDictionary(),
                                                                    new HttpRouteValueDictionary(), null, string.Empty));

                (new ShimHttpRoute(localizationRouteNeutral)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
                    (requestContext, values) => new HttpVirtualPathData(localizationRouteNeutral.Instance, "Welcome");

                routes[string.Empty] = localizationRouteNeutral;

                ShimLocalizationRoute localizationRouteEnglish =
                    new ShimLocalizationRoute(new LocalizationRoute("Welcome",
                                                                    new HttpRouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new HttpRouteValueDictionary(),
                                                                    new HttpRouteValueDictionary(), null, "en"));

                (new ShimHttpRoute(localizationRouteEnglish)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
                    (requestContext, values) => new HttpVirtualPathData(localizationRouteEnglish.Instance, "Welcome");

                routes["en"] = localizationRouteEnglish;

                ShimLocalizationRoute localizationRouteGerman =
                    new ShimLocalizationRoute(new LocalizationRoute("Willkommen",
                                                                    new HttpRouteValueDictionary()
                {
                    { "controller", "Home" }, { "action", "Index" }
                }, new HttpRouteValueDictionary(),
                                                                    new HttpRouteValueDictionary(), null, "de"));

                routes["de"] = localizationRouteGerman;

                (new ShimHttpRoute(localizationRouteGerman)).GetVirtualPathHttpRequestMessageIDictionaryOfStringObject =
                    (requestContext, values) => new HttpVirtualPathData(localizationRouteGerman.Instance, "Willkommen");

                // Act
                IHttpVirtualPathData virtualPathData = localizationCollectionRoute.GetVirtualPath(null,
                                                                                                  new HttpRouteValueDictionary());

                // Assert
                Assert.AreEqual(virtualPathData.Route, localizationRouteEnglish.Instance);
            }
        }