Ejemplo n.º 1
0
        public void ReversingUrls()
        {
            ViewUrl url1 = new ViewUrl(@"^product/(?<category>\w+)/(\d+)/$", View1, "url1");
            ViewUrl url2 = new ViewUrl(@"^product/(?<category>(?:[\w\s]+))/\((\d+)\)/(\w+)/$", View1, "url2");
            ViewUrl url3 = new ViewUrl(@"^product/(?<category>\w+)/\d+/$", View1, "url3");

            string revUrl1 = url1.Reverse("category=green", "1=7");
            string revUrl2 = url2.Reverse("category=green and yellow", "1=7", "2=page");

            Assert.Equal("/product/green/7/", revUrl1);
            Assert.Equal("/product/green%20and%20yellow/(7)/page/", revUrl2);
            Assert.Throws(typeof(Exception), () => {
                // positional argument 1 = "page" is not permitted because it must be numeric
                url2.Reverse("category=green", "1=page", "2=7");
            });
            Assert.Throws(typeof(Exception), () => {
                // url3 is not reversible because \d+ at the end was not enclosed in a group and can not be resolved
                url3.Reverse("category=green", "1=7");
            });
        }