coverage of urltree is fairly complete now
authorTero Marttila <terom@fixme.fi>
Mon, 16 Feb 2009 21:52:03 +0200
changeset 85fd4b9a80e602
parent 84 65dcbedaa5f5
child 86 6ff1140586d6
coverage of urltree is fairly complete now
tests/test_urltree.py
     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 +