diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-09-14 12:11:44 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-09-14 12:11:44 +0000 |
| commit | 70f1cda02f9acccf7ee1c8ad1a7ade36fba10dba (patch) | |
| tree | af2236494ee485c40575bb728d5755de1d579ace /repoze/bfg/tests | |
| parent | 7edbac105bdde5cf27ea397343c748ec24b11bd8 (diff) | |
| download | pyramid-70f1cda02f9acccf7ee1c8ad1a7ade36fba10dba.tar.gz pyramid-70f1cda02f9acccf7ee1c8ad1a7ade36fba10dba.tar.bz2 pyramid-70f1cda02f9acccf7ee1c8ad1a7ade36fba10dba.zip | |
- The ``add_route`` method of a Configurator now accepts a
``pregenerator`` argument. The pregenerator for the resulting route
is called by ``route_url`` in order to adjust the set of arguments
passed to it by the user for special purposes, such as Pylons
'subdomain' support. It will influence the URL returned by
``route_url``. See the ``repoze.bfg.interfaces.IRoutePregenerator``
interface for more information.
Diffstat (limited to 'repoze/bfg/tests')
| -rw-r--r-- | repoze/bfg/tests/test_configuration.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_url.py | 40 |
2 files changed, 34 insertions, 11 deletions
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py index b095c5c4c..47649d6ba 100644 --- a/repoze/bfg/tests/test_configuration.py +++ b/repoze/bfg/tests/test_configuration.py @@ -2024,6 +2024,11 @@ class ConfiguratorTests(unittest.TestCase): config = self._makeOne() self.assertRaises(ConfigurationError, config.add_route, 'name') + def test_add_route_with_pregenerator(self): + config = self._makeOne() + route = config.add_route('name', 'pattern', pregenerator='123') + self.assertEqual(route.pregenerator, '123') + def test__override_not_yet_registered(self): from repoze.bfg.interfaces import IPackageOverrides package = DummyPackage('package') diff --git a/repoze/bfg/tests/test_url.py b/repoze/bfg/tests/test_url.py index e38c6a8eb..1b6f7814c 100644 --- a/repoze/bfg/tests/test_url.py +++ b/repoze/bfg/tests/test_url.py @@ -150,7 +150,7 @@ class TestRouteUrl(unittest.TestCase): def test_with_elements(self): from repoze.bfg.interfaces import IRoutesMapper request = _makeRequest() - mapper = DummyRoutesMapper(result='/1/2/3') + mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3')) request.registry.registerUtility(mapper, IRoutesMapper) result = self._callFUT('flub', request, 'extra1', 'extra2', a=1, b=2, c=3, _query={'a':1}, @@ -161,7 +161,7 @@ class TestRouteUrl(unittest.TestCase): def test_no_elements(self): from repoze.bfg.interfaces import IRoutesMapper request = _makeRequest() - mapper = DummyRoutesMapper(result='/1/2/3') + mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3')) request.registry.registerUtility(mapper, IRoutesMapper) result = self._callFUT('flub', request, a=1, b=2, c=3, _query={'a':1}, _anchor=u"foo") @@ -178,23 +178,37 @@ class TestRouteUrl(unittest.TestCase): def test_generate_doesnt_receive_query_or_anchor(self): from repoze.bfg.interfaces import IRoutesMapper - mapper = DummyRoutesMapper(result='') + route = DummyRoute(result='') + mapper = DummyRoutesMapper(route=route) from zope.component import getSiteManager sm = getSiteManager() sm.registerUtility(mapper, IRoutesMapper) request = DummyRequest() result = self._callFUT('flub', request, _query=dict(name='some_name')) - self.assertEqual(mapper.kw, {}) # shouldnt have anchor/query + self.assertEqual(route.kw, {}) # shouldnt have anchor/query self.assertEqual(result, 'http://example.com:5432?name=some_name') def test_with_app_url(self): from repoze.bfg.interfaces import IRoutesMapper request = _makeRequest() - mapper = DummyRoutesMapper(result='/1/2/3') + mapper = DummyRoutesMapper(route=DummyRoute(result='/1/2/3')) request.registry.registerUtility(mapper, IRoutesMapper) result = self._callFUT('flub', request, _app_url='http://example2.com') self.assertEqual(result, 'http://example2.com/1/2/3') + def test_with_pregenerator(self): + from repoze.bfg.interfaces import IRoutesMapper + request = _makeRequest() + route = DummyRoute(result='/1/2/3') + def pregenerator(request, elements, kw): + return ('a',), {'_app_url':'http://example2.com'} + route.pregenerator = pregenerator + mapper = DummyRoutesMapper(route=route) + request.registry.registerUtility(mapper, IRoutesMapper) + result = self._callFUT('flub', request) + self.assertEqual(result, 'http://example2.com/1/2/3/a') + self.assertEqual(route.kw, {}) # shouldnt have anchor/query + class TestStaticUrl(unittest.TestCase): def setUp(self): cleanUp() @@ -259,14 +273,19 @@ class DummyRequest: class DummyRoutesMapper: raise_exc = None - def __init__(self, result='/1/2/3', raise_exc=False, routes=()): + def __init__(self, route=None, raise_exc=False): + self.route = route + + def get_route(self, route_name): + return self.route + +class DummyRoute: + pregenerator = None + def __init__(self, result='/1/2/3'): self.result = result - self.routes = routes - def generate(self, *route_args, **kw): + def generate(self, kw): self.kw = kw - if self.raise_exc: - raise self.raise_exc return self.result def _makeRequest(environ=None): @@ -274,7 +293,6 @@ def _makeRequest(environ=None): request = DummyRequest(environ) request.registry = Registry() return request - class DummyStaticURLInfo: def __init__(self, result): |
