public void ShouldSkipIfDifferentParameterWasPassed()
        {
            var route = new PatternRoute("/some/<controller>");

            Assert.IsNull(route.CreateUrl(DictHelper.Create("project=MR")));
            Assert.IsNull(route.CreateUrl(DictHelper.Create("controller=home", "project=MR")));
        }
		public void ShouldMatchNamedRequiredParameter()
		{
			PatternRoute route = new PatternRoute("/some/<controller>");
			Assert.AreEqual("/some/home", route.CreateUrl(DictHelper.Create("controller=home")));
			Assert.AreEqual("/some/home", route.CreateUrl(standardRouteParamsWithoutArea));
			Assert.IsNull(route.CreateUrl(standardRouteParamsWithArea));

			route = new PatternRoute("/some/<controller>/<action>");
			Assert.AreEqual("/some/home/index", route.CreateUrl(DictHelper.Create("controller=home", "action=index")));
			Assert.AreEqual("/some/home/index", route.CreateUrl(standardRouteParamsWithoutArea));
			Assert.IsNull(route.CreateUrl(standardRouteParamsWithArea));
		}
        public void ShouldMatchNamedRequiredParameter()
        {
            var route = new PatternRoute("/some/<controller>");

            Assert.AreEqual("/some/home", route.CreateUrl(DictHelper.Create("controller=home")));
            Assert.AreEqual("/some/home", route.CreateUrl(standardRouteParamsWithoutArea));
            Assert.IsNull(route.CreateUrl(standardRouteParamsWithArea));

            route = new PatternRoute("/some/<controller>/<action>");
            Assert.AreEqual("/some/home/index", route.CreateUrl(DictHelper.Create("controller=home", "action=index")));
            Assert.AreEqual("/some/home/index", route.CreateUrl(standardRouteParamsWithoutArea));
            Assert.IsNull(route.CreateUrl(standardRouteParamsWithArea));
        }
        public void ShouldIgnoreOptionalParameterButMatchOthers()
        {
            var route = new PatternRoute("/<controller>/[action]");

            Assert.AreEqual("/home",
                            route.CreateUrl(DictHelper.Create("controller=home")));
        }
		public void ShouldMatchNamedRequiredParametersWithExtension()
		{
			PatternRoute route = new PatternRoute("/some/<controller>.castle/<action>");

			Assert.AreEqual("/some/home.castle/index", 
				route.CreateUrl(DictHelper.Create("controller=home", "action=index")));
		}
        public void ShouldMatchNamedRequiredParametersWithExtension()
        {
            var route = new PatternRoute("/some/<controller>.castle/<action>");

            Assert.AreEqual("/some/home.castle/index",
                            route.CreateUrl(DictHelper.Create("controller=home", "action=index")));
        }
		public void ShouldIgnoreOptionalParameterButMatchOthers()
		{
			PatternRoute route = new PatternRoute("/<controller>/[action]");

			Assert.AreEqual("/home", 
				route.CreateUrl(DictHelper.Create("controller=home")));
		}
        public void ShouldApplyRestrictionsToParameters()
        {
            var route = new PatternRoute("/projects/<project>/<controller>/[action]/[id]").
                        DefaultFor("action").Is("index").
                        Restrict("controller").AnyOf("stories", "bugs", "tasks").
                        Restrict("id").ValidInteger;

            Assert.IsNull(
                route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=home")));

            Assert.AreEqual("/projects/MonoRail/Stories",
                            route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=Stories")));

            Assert.AreEqual("/projects/MonoRail/bugs",
                            route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=bugs", "action=index")));
        }
        public void ShouldCreateRouteUrlIfDefaultsAreNotSupplied()
        {
            var route = new PatternRoute("/people/<id>/edit").
                        DefaultForAction().Is("edit").
                        DefaultForController().Is("people").
                        Restrict("id").ValidInteger;

            Assert.AreEqual("/people/1/edit", route.CreateUrl(DictHelper.Create("id=1")));
        }
        public void ShouldNotCreateRouteUrlIfDefaultsDoNotMatchAndDefaultDoesNotHaveARestriction()
        {
            var route = new PatternRoute("/people/<id>/edit").
                        DefaultForAction().Is("edit").
                        DefaultForController().Is("companies").
                        Restrict("id").ValidInteger;

            Assert.IsNull(route.CreateUrl(DictHelper.Create("controller=people", "action=edit", "id=1")));
        }
        public void ShouldOmitOptionalParameterIfMatchesWithDefault()
        {
            var route = new PatternRoute("/projects/<project>/<controller>/[action]/[id]").
                        DefaultFor("action").Is("index").
                        Restrict("controller").AnyOf("stories", "bugs", "tasks").
                        Restrict("id").ValidInteger;

            Assert.AreEqual("/projects/MonoRail/bugs",
                            route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=bugs", "action=index")));
        }
        public void ShouldCreateRouteUrlIfDefaultsDoNotMatchAndDefaultsHaveRestrictions()
        {
            var route = new PatternRoute("/people/<id>/edit.[format]").
                        DefaultForAction().Is("edit").
                        DefaultForController().Is("people").
                        Restrict("id").ValidInteger.
                        Restrict("format").AnyOf(new[] { "html", "json", "xml" }).
                        DefaultFor("format").Is("html");

            Assert.AreEqual("/people/1/edit.json", route.CreateUrl(DictHelper.Create("id=1", "format=json")));
        }
        public void ShouldNotLeaveATrailingSlash()
        {
            var route = new PatternRoute("/people/<id>/edit.[format]/").
                        DefaultForAction().Is("edit").
                        DefaultForController().Is("people").
                        Restrict("id").ValidInteger.
                        Restrict("format").AnyOf(new[] { "html", "json", "xml" }).
                        DefaultFor("format").Is("html");

            Assert.AreEqual("/people/1/edit", route.CreateUrl(DictHelper.Create("id=1")));
        }
		public void ShouldNotCreateRouteUrlIfDefaultsDoNotMatchAndDefaultDoesNotHaveARestriction()
		{
			PatternRoute route = new PatternRoute("/people/<id>/edit").
				DefaultForAction().Is("edit").
				DefaultForController().Is("companies").
				Restrict("id").ValidInteger;

			Assert.IsNull(route.CreateUrl(DictHelper.Create("controller=people", "action=edit", "id=1")));
		}
        public void ShouldNotMatchIfParameterIsNotPresent()
        {
            var route = new PatternRoute("/some/<controller>");

            Assert.IsNull(route.CreateUrl(DictHelper.Create("")));
        }
		public void ShouldSkipIfDifferentParameterWasPassed()
		{
			PatternRoute route = new PatternRoute("/some/<controller>");
			Assert.IsNull(route.CreateUrl(DictHelper.Create("project=MR")));
			Assert.IsNull(route.CreateUrl(DictHelper.Create("controller=home", "project=MR")));
		}
		public void ShouldNotMatchStaticRule()
		{
			PatternRoute route = new PatternRoute("/some/path");
			Assert.IsNull(route.CreateUrl(DictHelper.Create("")));
		}
		public void ShouldNotMatchIfParameterIsNotPresent()
		{
			PatternRoute route = new PatternRoute("/some/<controller>");
			Assert.IsNull(route.CreateUrl(DictHelper.Create("")));
		}
		public void ShouldNotLeaveATrailingSlash()
		{
			PatternRoute route = new PatternRoute("/people/<id>/edit.[format]/").
				DefaultForAction().Is("edit").
				DefaultForController().Is("people").
				Restrict("id").ValidInteger.
				Restrict("format").AnyOf(new string[] { "html", "json", "xml" }).
				DefaultFor("format").Is("html");

			Assert.AreEqual("/people/1/edit", route.CreateUrl(DictHelper.Create("id=1")));
		}
		public void ShouldCreateRouteUrlIfDefaultsAreNotSupplied()
		{
			PatternRoute route = new PatternRoute("/people/<id>/edit").
				DefaultForAction().Is("edit").
				DefaultForController().Is("people").
				Restrict("id").ValidInteger;

			Assert.AreEqual("/people/1/edit", route.CreateUrl(DictHelper.Create("id=1")));
		}
		public void ShouldCreateRouteUrlIfDefaultsDoNotMatchAndDefaultsHaveRestrictions()
		{
			PatternRoute route = new PatternRoute("/people/<id>/edit.[format]").
				DefaultForAction().Is("edit").
				DefaultForController().Is("people").
				Restrict("id").ValidInteger.
				Restrict("format").AnyOf(new string[]{"html", "json", "xml"}).
				DefaultFor("format").Is("html");

			Assert.AreEqual("/people/1/edit.json", route.CreateUrl(DictHelper.Create("id=1", "format=json")));
		}
        public void ShouldNotMatchStaticRule()
        {
            var route = new PatternRoute("/some/path");

            Assert.IsNull(route.CreateUrl(DictHelper.Create("")));
        }
		public void ShouldOmitOptionalParameterIfMatchesWithDefault()
		{
			PatternRoute route = new PatternRoute("/projects/<project>/<controller>/[action]/[id]").
				DefaultFor("action").Is("index").
				Restrict("controller").AnyOf("stories", "bugs", "tasks").
				Restrict("id").ValidInteger;

			Assert.AreEqual("/projects/MonoRail/bugs", 
				route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=bugs", "action=index")));
		}
		public void ShouldApplyRestrictionsToParameters()
		{
			PatternRoute route = new PatternRoute("/projects/<project>/<controller>/[action]/[id]").
					DefaultFor("action").Is("index").
					Restrict("controller").AnyOf("stories", "bugs", "tasks").
					Restrict("id").ValidInteger;

			Assert.IsNull(
				route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=home")));

			Assert.AreEqual("/projects/MonoRail/Stories", 
				route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=Stories")));
			
			Assert.AreEqual("/projects/MonoRail/bugs", 
				route.CreateUrl(DictHelper.Create("project=MonoRail", "controller=bugs", "action=index")));
		}
Example #25
0
 public string CreateUrl(string hostname, string virtualPath, System.Collections.IDictionary parameters, out int points)
 {
     return(_innerRoute.CreateUrl(hostname, virtualPath, parameters, out points));
 }