566 self._test_match("quux/a/boo", self.quux_boo, xyz="a", opt="no") |
566 self._test_match("quux/a/boo", self.quux_boo, xyz="a", opt="no") |
567 |
567 |
568 def test_yes (self) : |
568 def test_yes (self) : |
569 self._test_match("quux/a/yes", self.quux_yes, xyz="a") |
569 self._test_match("quux/a/yes", self.quux_yes, xyz="a") |
570 |
570 |
571 |
571 class TestTreeHandler (unittest.TestCase) : |
|
572 def _build_handler (self, name) : |
|
573 def _handler (req, **args) : |
|
574 return name, args |
|
575 |
|
576 return _handler |
|
577 |
|
578 def setUp (self) : |
|
579 self.config = urltree.URLConfig(ignore_extra_args=True) |
|
580 |
|
581 self.root =self.config("/", self._build_handler('root')) |
|
582 self.bar = self.config("/bar", self._build_handler('bar')) |
|
583 self.quux = self.config("/quux/{xyz}", self._build_handler('quux')) |
|
584 self.quux_boo = self.config("/quux/{xyz}/boo/{opt=no}", self._build_handler('quux_boo')) |
|
585 |
|
586 self.tree = urltree.URLTree(self.config) |
|
587 |
|
588 class dummyrequest_page : |
|
589 def __init__ (self, page_name, qargs) : |
|
590 self.page_name = page_name |
|
591 self.qargs = qargs |
|
592 |
|
593 def get_page_name (self) : return self.page_name |
|
594 def get_args (self) : return self.qargs |
|
595 |
|
596 def _test_handle (self, path, name, qargs={}, **args) : |
|
597 req = self.dummyrequest_page(path, qargs.iteritems()) |
|
598 |
|
599 h_name, h_args = self.tree.handle_request(req) |
|
600 |
|
601 self.assertEqual(h_name, name) |
|
602 self.assertEqual(h_args, args) |
|
603 |
|
604 def test_root (self) : |
|
605 self._test_handle("", 'root') |
|
606 |
|
607 def test_bar (self) : |
|
608 self._test_handle("bar", 'bar') |
|
609 |
|
610 def test_quux (self) : |
|
611 self._test_handle("quux/a", 'quux', xyz='a') |
|
612 |
|
613 def test_quux_boo (self) : |
|
614 self._test_handle("quux/a/boo/b", 'quux_boo', xyz='a', opt='b') |
|
615 |
|
616 def test_quux_boo_default (self) : |
|
617 self._test_handle("quux/a/boo", 'quux_boo', xyz='a', opt='no') |
|
618 |
|
619 def test_quux_boo_qarg (self) : |
|
620 self._test_handle("quux/a/boo", 'quux_boo', dict(opt='yes'), xyz='a', opt='yes') |
|
621 |