diff options
author | Robin Abbi <robin.abbi@downley.net> | 2020-05-04 14:05:48 +0100 |
---|---|---|
committer | Robin Abbi <robin.abbi@downley.net> | 2020-05-04 14:05:48 +0100 |
commit | f6540b5e350430d8581df30d3996c966a8bf9537 (patch) | |
tree | 5d04f8b0e2fa895058b8aefc7f2ca5323b5086c8 | |
parent | 9cd647a12f38de5082f4c052c2f355858b65f724 (diff) | |
download | routes-f6540b5e350430d8581df30d3996c966a8bf9537.tar.gz |
Add conditions to Mapper.extend.
-rw-r--r-- | routes/mapper.py | 6 | ||||
-rw-r--r-- | tests/test_functional/test_explicit_use.py | 30 |
2 files changed, 34 insertions, 2 deletions
diff --git a/routes/mapper.py b/routes/mapper.py index eb4060a..0f7a2e8 100644 --- a/routes/mapper.py +++ b/routes/mapper.py @@ -490,7 +490,11 @@ class Mapper(SubMapperParent): routepath = path_prefix + route.routepath else: routepath = route.routepath - self.connect(route.name, routepath, **route._kargs) + self.connect(route.name, + routepath, + conditions=route.conditions, + **route._kargs, + ) def make_route(self, *args, **kargs): """Make a new Route object diff --git a/tests/test_functional/test_explicit_use.py b/tests/test_functional/test_explicit_use.py index ccd3b7a..b1e1cd7 100644 --- a/tests/test_functional/test_explicit_use.py +++ b/tests/test_functional/test_explicit_use.py @@ -1,6 +1,6 @@ """test_explicit_use""" import os, sys, time, unittest -from nose.tools import eq_, assert_raises +from nose.tools import eq_, assert_raises, assert_is_none from routes import * from routes.route import Route @@ -101,6 +101,34 @@ class TestUtils(unittest.TestCase): map.extend(routes) eq_(map.match('/foo'), {}) + def test_add_routes_conditions_unmet(self): + map = Mapper(explicit=True) + map.minimization = False + routes = [ + Route('foo', '/foo', conditions=dict(method=["POST"])) + ] + environ = { + 'HTTP_HOST': 'localhost.com', + 'PATH_INFO': '/foo', + 'REQUEST_METHOD': 'GET', + } + map.extend(routes) + assert_is_none(map.match('/foo', environ=environ)) + + def test_add_routes_conditions_met(self): + map = Mapper(explicit=True) + map.minimization = False + routes = [ + Route('foo', '/foo', conditions=dict(method=["POST"])) + ] + environ = { + 'HTTP_HOST': 'localhost.com', + 'PATH_INFO': '/foo', + 'REQUEST_METHOD': 'POST', + } + map.extend(routes) + eq_(map.match('/foo', environ=environ), {}) + def test_using_func(self): def fred(view): pass |