1.1 --- a/tests/test_urltree.py Mon Feb 16 21:44:06 2009 +0200
1.2 +++ b/tests/test_urltree.py Mon Feb 16 21:52:03 2009 +0200
1.3 @@ -568,4 +568,54 @@
1.4 def test_yes (self) :
1.5 self._test_match("quux/a/yes", self.quux_yes, xyz="a")
1.6
1.7 +class TestTreeHandler (unittest.TestCase) :
1.8 + def _build_handler (self, name) :
1.9 + def _handler (req, **args) :
1.10 + return name, args
1.11 +
1.12 + return _handler
1.13
1.14 + def setUp (self) :
1.15 + self.config = urltree.URLConfig(ignore_extra_args=True)
1.16 +
1.17 + self.root =self.config("/", self._build_handler('root'))
1.18 + self.bar = self.config("/bar", self._build_handler('bar'))
1.19 + self.quux = self.config("/quux/{xyz}", self._build_handler('quux'))
1.20 + self.quux_boo = self.config("/quux/{xyz}/boo/{opt=no}", self._build_handler('quux_boo'))
1.21 +
1.22 + self.tree = urltree.URLTree(self.config)
1.23 +
1.24 + class dummyrequest_page :
1.25 + def __init__ (self, page_name, qargs) :
1.26 + self.page_name = page_name
1.27 + self.qargs = qargs
1.28 +
1.29 + def get_page_name (self) : return self.page_name
1.30 + def get_args (self) : return self.qargs
1.31 +
1.32 + def _test_handle (self, path, name, qargs={}, **args) :
1.33 + req = self.dummyrequest_page(path, qargs.iteritems())
1.34 +
1.35 + h_name, h_args = self.tree.handle_request(req)
1.36 +
1.37 + self.assertEqual(h_name, name)
1.38 + self.assertEqual(h_args, args)
1.39 +
1.40 + def test_root (self) :
1.41 + self._test_handle("", 'root')
1.42 +
1.43 + def test_bar (self) :
1.44 + self._test_handle("bar", 'bar')
1.45 +
1.46 + def test_quux (self) :
1.47 + self._test_handle("quux/a", 'quux', xyz='a')
1.48 +
1.49 + def test_quux_boo (self) :
1.50 + self._test_handle("quux/a/boo/b", 'quux_boo', xyz='a', opt='b')
1.51 +
1.52 + def test_quux_boo_default (self) :
1.53 + self._test_handle("quux/a/boo", 'quux_boo', xyz='a', opt='no')
1.54 +
1.55 + def test_quux_boo_qarg (self) :
1.56 + self._test_handle("quux/a/boo", 'quux_boo', dict(opt='yes'), xyz='a', opt='yes')
1.57 +