tests/test_urltree.py
changeset 83 69312afad653
parent 82 d636dfcbd519
child 84 65dcbedaa5f5
equal deleted inserted replaced
82:d636dfcbd519 83:69312afad653
   155         self.assertRaises(urltree.URLError, self.label.build, dict(test=None))
   155         self.assertRaises(urltree.URLError, self.label.build, dict(test=None))
   156     
   156     
   157     def test_build_default (self) :
   157     def test_build_default (self) :
   158         self.assertEqual(self.label_default_0.build_default({}), (True, "0"))
   158         self.assertEqual(self.label_default_0.build_default({}), (True, "0"))
   159         self.assertEqual(self.label_default_1.build_default({}), (True, "1"))
   159         self.assertEqual(self.label_default_1.build_default({}), (True, "1"))
       
   160         self.assertEqual(self.label_default_0.build_default(dict(test=0)), (True, "0"))
   160     
   161     
   161     def test_build_nonedefault (self) :
   162     def test_build_nonedefault (self) :
   162         self.assertEqual(self.label_default_1.build_default(dict(test=None)), (True, "1"))
   163         self.assertEqual(self.label_default_1.build_default(dict(test=None)), (True, "1"))
   163 
   164 
   164     def test_build_value (self) :
   165     def test_build_value (self) :
   165         self.assertEqual(self.label.build_default(dict(test=0)), (False, "0"))
   166         self.assertEqual(self.label.build_default(dict(test=0)), (False, "0"))
   166         self.assertEqual(self.label.build_default(dict(test=1)), (False, "1"))
   167         self.assertEqual(self.label.build_default(dict(test=1)), (False, "1"))
   167         self.assertEqual(self.label_default_0.build_default(dict(test=1)), (False, "1"))
   168         self.assertEqual(self.label_default_0.build_default(dict(test=1)), (False, "1"))
   168         self.assertEqual(self.label_default_0.build_default(dict(test=0)), (False, "0"))
       
   169 
   169 
   170     def test_str (self) :
   170     def test_str (self) :
   171         self.assertEqual(str(self.label), "{test:int}")
   171         self.assertEqual(str(self.label), "{test:int}")
   172         self.assertEqual(str(self.label_default_0), "{test:int=0}")
   172         self.assertEqual(str(self.label_default_0), "{test:int=0}")
   173         self.assertEqual(str(self.label_default_1), "{test:int=1}")
   173         self.assertEqual(str(self.label_default_1), "{test:int=1}")
   291         self.assertEquals(set(url.query_args), set(qargs))
   291         self.assertEquals(set(url.query_args), set(qargs))
   292         
   292         
   293         # right qargs values
   293         # right qargs values
   294         for key, value in qargs.iteritems() :
   294         for key, value in qargs.iteritems() :
   295             self.assertEquals(url.query_args[key], value)
   295             self.assertEquals(url.query_args[key], value)
   296 
   296     
       
   297     # __init__
   297     def test_label_path_empty (self) :
   298     def test_label_path_empty (self) :
   298         self._test_label_path("", urltree.EmptyLabel())
   299         self._test_label_path("", urltree.EmptyLabel())
   299     
   300     
   300     def test_label_path_root (self) :
   301     def test_label_path_root (self) :
   301         self._test_label_path("/", urltree.EmptyLabel())
   302         self._test_label_path("/", urltree.EmptyLabel())
   371 
   372 
   372         # exec
   373         # exec
   373         out_args = url.execute(req, values)
   374         out_args = url.execute(req, values)
   374         
   375         
   375         return out_args
   376         return out_args
   376         
   377     
       
   378     # execute
   377     def test_execute_empty (self) :
   379     def test_execute_empty (self) :
   378         self.assertEquals(set(self._test_execute("/")), set())
   380         self.assertEquals(set(self._test_execute("/")), set())
   379 
   381 
   380     def test_execute_plain (self) :
   382     def test_execute_plain (self) :
   381         self.assertEquals(set(self._test_execute("/foo")), set())
   383         self.assertEquals(set(self._test_execute("/foo")), set())
   422     def test_execute_qarg_override_ignore (self) :
   424     def test_execute_qarg_override_ignore (self) :
   423         self.assertEqual(self._test_execute("/{foo}", dict(foo=("x1", False)), dict(foo="x2")), dict(foo="x1"))
   425         self.assertEqual(self._test_execute("/{foo}", dict(foo=("x1", False)), dict(foo="x2")), dict(foo="x1"))
   424         
   426         
   425     def test_execute_qarg_override_ok (self) :
   427     def test_execute_qarg_override_ok (self) :
   426         self.assertEqual(self._test_execute("/{foo=x1}", dict(foo=("x1", True)), dict(foo="x2")), dict(foo="x2"))
   428         self.assertEqual(self._test_execute("/{foo=x1}", dict(foo=("x1", True)), dict(foo="x2")), dict(foo="x2"))
   427 
   429     
       
   430     # build
       
   431     class dummyrequest_page :
       
   432         def __init__ (self, page_prefix) :
       
   433             self.page_prefix = page_prefix
       
   434     
       
   435     def _test_build (self, mask, url, **args) :
       
   436         self.assertEquals(self.config(mask, None).build(self.dummyrequest_page("/index.cgi"), **args), "/index.cgi" + url)
       
   437     
       
   438     def _test_build_fails (self, err, mask, **args) :
       
   439         self.assertRaises(err, self.config(mask, None).build, self.dummyrequest_page("/index.cgi"), **args)
       
   440 
       
   441     def test_build_empty (self) :
       
   442         self._test_build("/", "/")
       
   443 
       
   444     def test_build_static (self) :
       
   445         self._test_build("/foo", "/foo")
       
   446 
       
   447     def test_build_simple (self) :
       
   448         self._test_build("/foo/{bar}", "/foo/x", bar="x")
       
   449 
       
   450     def test_build_multi (self) :
       
   451         self._test_build("/foo/{bar}/{quux}", "/foo/x/y", bar="x", quux="y")
       
   452     
       
   453     def test_build_missing (self) :
       
   454         self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x")
       
   455     
       
   456     def test_build_unknown (self) :
       
   457         self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x", quux="y", frob="???")
       
   458 
       
   459     def test_build_long (self) :
       
   460         self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x/y", bar="x", quux="y")
       
   461     
       
   462     def test_build_short (self) :
       
   463         self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux="b")
       
   464     
       
   465     def test_build_with_none (self) :
       
   466         self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux=None)
       
   467  
       
   468     def test_build_default (self) :
       
   469         self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x")
       
   470     
       
   471     def test_build_qargs (self) :
       
   472         self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a")
       
   473 
       
   474     def test_build_qargs_default (self) :
       
   475         self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a")
       
   476     
       
   477     # XXX: this just becomes ...?quux=['a', 'b'] like from str(list)
       
   478 #    def test_build_qargs_multi_invalid (self) :
       
   479 #        self.assertRaises(urltree.URLError, self.config("/foo/{bar}/?quux", None).build, self.dummyrequest_page("/index.cgi"), bar="x", quux=["a", "b"])
       
   480     
       
   481     def test_build_qargs_multi_list (self) :
       
   482         self._test_build("/foo/{bar}/?quux:list", "/foo/x?quux=a&quux=b", bar="x", quux=["a", "b"])
       
   483 
       
   484     def test_build_qargs_none (self) :
       
   485         self._test_build("/foo/{bar}/?quux", "/foo/x", bar="x", quux=None)
       
   486 
       
   487 
       
   488