--- a/tests/test_urltree.py Mon Feb 16 21:44:06 2009 +0200
+++ b/tests/test_urltree.py Mon Feb 16 21:52:03 2009 +0200
@@ -568,4 +568,54 @@
def test_yes (self) :
self._test_match("quux/a/yes", self.quux_yes, xyz="a")
+class TestTreeHandler (unittest.TestCase) :
+ def _build_handler (self, name) :
+ def _handler (req, **args) :
+ return name, args
+
+ return _handler
+ def setUp (self) :
+ self.config = urltree.URLConfig(ignore_extra_args=True)
+
+ self.root =self.config("/", self._build_handler('root'))
+ self.bar = self.config("/bar", self._build_handler('bar'))
+ self.quux = self.config("/quux/{xyz}", self._build_handler('quux'))
+ self.quux_boo = self.config("/quux/{xyz}/boo/{opt=no}", self._build_handler('quux_boo'))
+
+ self.tree = urltree.URLTree(self.config)
+
+ class dummyrequest_page :
+ def __init__ (self, page_name, qargs) :
+ self.page_name = page_name
+ self.qargs = qargs
+
+ def get_page_name (self) : return self.page_name
+ def get_args (self) : return self.qargs
+
+ def _test_handle (self, path, name, qargs={}, **args) :
+ req = self.dummyrequest_page(path, qargs.iteritems())
+
+ h_name, h_args = self.tree.handle_request(req)
+
+ self.assertEqual(h_name, name)
+ self.assertEqual(h_args, args)
+
+ def test_root (self) :
+ self._test_handle("", 'root')
+
+ def test_bar (self) :
+ self._test_handle("bar", 'bar')
+
+ def test_quux (self) :
+ self._test_handle("quux/a", 'quux', xyz='a')
+
+ def test_quux_boo (self) :
+ self._test_handle("quux/a/boo/b", 'quux_boo', xyz='a', opt='b')
+
+ def test_quux_boo_default (self) :
+ self._test_handle("quux/a/boo", 'quux_boo', xyz='a', opt='no')
+
+ def test_quux_boo_qarg (self) :
+ self._test_handle("quux/a/boo", 'quux_boo', dict(opt='yes'), xyz='a', opt='yes')
+