Ejemplo n.º 1
0
        public void UseCurrentRouteParamsShouldBeHonoredRegardlessOfTheRoutingOrder()
        {
            var urlInfo = new UrlInfo("Services", "ModifyServiceWizard", "Step1", String.Empty, String.Empty);

            var parameters = new UrlBuilderParameters
            {
                RouteMatch = new RouteMatch
                {
                    Name = "ServiceWizardModify"
                }
            };

            parameters.RouteMatch.AddNamed("serviceArea", "Marketing");
            parameters.RouteMatch.AddNamed("action", "Step1");
            parameters.RouteMatch.AddNamed("controller", "ModifyServiceWizard");
            parameters.RouteMatch.AddNamed("area", "Services");
            parameters.UseCurrentRouteParams = true;

            IDictionary routeParameters = new HybridDictionary {
                { "action", "Step2" }
            };

            IRoutingEngine routingEngine = new StubRoutingEngine();

            routingEngine.Add(
                new PatternRoute("ServiceWizardCreate", "/Services/<serviceArea>/AddWizard/[action]")
                .DefaultForController().Is("CreateServiceWizard")
                .DefaultForArea().Is("Services")
                .DefaultForAction().Is("start")
                );

            routingEngine.Add(
                new PatternRoute("ServiceWizardModify", "/Services/<serviceArea>/ModifyWizard/[action]")
                .DefaultForController().Is("ModifyServiceWizard")
                .DefaultForArea().Is("Services")
                .DefaultForAction().Is("start")
                );
            urlBuilder.RoutingEngine = routingEngine;

            Assert.AreEqual("/Services/Marketing/ModifyWizard/Step2",
                            urlBuilder.BuildUrl(urlInfo, parameters, routeParameters));
        }
Ejemplo n.º 2
0
        public void RouteParametersShouldBePersistedDuringCreateUrlPartsWhenNoneSpecifiedInParameters()
        {
            var urlInfo = new UrlInfo("i", "shouldbe", "overridden", "/", ".castle");

            var         parameters      = new UrlBuilderParameters();//empty collection
            IDictionary routeParameters = new HybridDictionary
            {
                { "area", "routearea" },
                { "controller", "routecontroller" },
                { "action", "routeaction" }
            };

            IRoutingEngine routingEngine = new StubRoutingEngine();

            routingEngine.Add(new PatternRoute("default", "<area>/<controller>/<action>"));            //keep routing engine from being empty
            urlBuilder.RoutingEngine = routingEngine;

            Assert.AreEqual("/routearea/routecontroller/routeaction",
                            urlBuilder.BuildUrl(urlInfo, parameters, routeParameters));
        }
Ejemplo n.º 3
0
        public void If_Route_Name_Is_Specified_It_Should_Be_Used_Even_If_UseCurrentRouteParams_Is_True()
        {
            var urlInfo = new UrlInfo("", "Car", "View", String.Empty, String.Empty);

            var parameters = new UrlBuilderParameters
            {
                RouteMatch = new RouteMatch
                {
                    Name = "CarRoute"
                }
            };

            parameters.RouteMatch.AddNamed("carName", "Ford");
            parameters.RouteMatch.AddNamed("action", "View");
            parameters.RouteMatch.AddNamed("controller", "Car");
            parameters.UseCurrentRouteParams = true;
            parameters.RouteName             = "CarAddOptionWizard";

            IRoutingEngine routingEngine = new StubRoutingEngine();

            routingEngine.Add(
                new PatternRoute("CarRoute", "/Car/<carName>/[action]")
                .DefaultForController().Is("Car")
                .DefaultForAction().Is("VIew")
                );

            routingEngine.Add(
                new PatternRoute("CarAddOptionWizard", "/Car/<carName>/AddOption/[action]")
                .DefaultForController().Is("CarAddOptionWizard")
                .DefaultForAction().Is("start")
                );
            urlBuilder.RoutingEngine = routingEngine;

            Assert.AreEqual("/Car/Ford/AddOption",
                            urlBuilder.BuildUrl(urlInfo, parameters));
        }
		public void If_Route_Name_Is_Specified_It_Should_Be_Used_Even_If_UseCurrentRouteParams_Is_True()
		{
			var urlInfo = new UrlInfo("", "Car", "View", String.Empty, String.Empty);

			var parameters = new UrlBuilderParameters
			{
				RouteMatch = new RouteMatch
			{
				Name = "CarRoute"
			}
			};
			parameters.RouteMatch.AddNamed("carName", "Ford");
			parameters.RouteMatch.AddNamed("action", "View");
			parameters.RouteMatch.AddNamed("controller", "Car");
			parameters.UseCurrentRouteParams = true;
			parameters.RouteName = "CarAddOptionWizard";

			IRoutingEngine routingEngine = new StubRoutingEngine();
			routingEngine.Add(
				new PatternRoute("CarRoute", "/Car/<carName>/[action]")
					.DefaultForController().Is("Car")
					.DefaultForAction().Is("VIew")
				);

			routingEngine.Add(
				new PatternRoute("CarAddOptionWizard", "/Car/<carName>/AddOption/[action]")
					.DefaultForController().Is("CarAddOptionWizard")
					.DefaultForAction().Is("start")
				);
			urlBuilder.RoutingEngine = routingEngine;

			Assert.AreEqual("/Car/Ford/AddOption",
				urlBuilder.BuildUrl(urlInfo, parameters));
		}
		public void UseCurrentRouteParamsShouldBeHonoredRegardlessOfTheRoutingOrder()
		{
			var urlInfo = new UrlInfo("Services", "ModifyServiceWizard", "Step1", String.Empty, String.Empty);

			var parameters = new UrlBuilderParameters
			{
				RouteMatch = new RouteMatch
				{
					Name = "ServiceWizardModify"
				}
			};
			parameters.RouteMatch.AddNamed("serviceArea", "Marketing");
			parameters.RouteMatch.AddNamed("action", "Step1");
			parameters.RouteMatch.AddNamed("controller", "ModifyServiceWizard");
			parameters.RouteMatch.AddNamed("area", "Services");
			parameters.UseCurrentRouteParams = true;

			IDictionary routeParameters = new HybridDictionary { { "action", "Step2" } };

			IRoutingEngine routingEngine = new StubRoutingEngine();
			routingEngine.Add(
				new PatternRoute("ServiceWizardCreate", "/Services/<serviceArea>/AddWizard/[action]")
					.DefaultForController().Is("CreateServiceWizard")
					.DefaultForArea().Is("Services")
					.DefaultForAction().Is("start")
				);

			routingEngine.Add(
				new PatternRoute("ServiceWizardModify", "/Services/<serviceArea>/ModifyWizard/[action]")
					.DefaultForController().Is("ModifyServiceWizard")
					.DefaultForArea().Is("Services")
					.DefaultForAction().Is("start")
				);
			urlBuilder.RoutingEngine = routingEngine;

			Assert.AreEqual("/Services/Marketing/ModifyWizard/Step2",
			                urlBuilder.BuildUrl(urlInfo, parameters, routeParameters));
		}
		public void RouteParametersShouldBePersistedDuringCreateUrlPartsWhenNoneSpecifiedInParameters()
		{
			var urlInfo = new UrlInfo("i", "shouldbe", "overridden", "/", ".castle");

			var parameters = new UrlBuilderParameters();//empty collection
			IDictionary routeParameters = new HybridDictionary
			{
				{ "area", "routearea" }, 
				{ "controller", "routecontroller" }, 
				{ "action", "routeaction" }
			};

			IRoutingEngine routingEngine = new StubRoutingEngine();
			routingEngine.Add(new PatternRoute("default", "<area>/<controller>/<action>"));//keep routing engine from being empty
			urlBuilder.RoutingEngine = routingEngine;

			Assert.AreEqual("/routearea/routecontroller/routeaction",
				urlBuilder.BuildUrl(urlInfo, parameters, routeParameters));

		}