summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-09-14 12:11:44 +0000
committerChris McDonough <chrism@agendaless.com>2010-09-14 12:11:44 +0000
commit70f1cda02f9acccf7ee1c8ad1a7ade36fba10dba (patch)
treeaf2236494ee485c40575bb728d5755de1d579ace /repoze/bfg/tests
parent7edbac105bdde5cf27ea397343c748ec24b11bd8 (diff)
downloadpyramid-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.py5
-rw-r--r--repoze/bfg/tests/test_url.py40
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):