diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-22 11:02:28 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-22 11:02:28 +0000 |
| commit | 8392d7094c96f777f6d1d5f0c62051702191d106 (patch) | |
| tree | 6fd39e2c10fc33a5b2be08e7467c9e6ad0887b78 /repoze/bfg/tests/test_urldispatch.py | |
| parent | b584143b2c408b979c340939f48b8a4ffe725e62 (diff) | |
| download | pyramid-8392d7094c96f777f6d1d5f0c62051702191d106.tar.gz pyramid-8392d7094c96f777f6d1d5f0c62051702191d106.tar.bz2 pyramid-8392d7094c96f777f6d1d5f0c62051702191d106.zip | |
Add url-based dispatch.
Diffstat (limited to 'repoze/bfg/tests/test_urldispatch.py')
| -rw-r--r-- | repoze/bfg/tests/test_urldispatch.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_urldispatch.py b/repoze/bfg/tests/test_urldispatch.py new file mode 100644 index 000000000..a3e156861 --- /dev/null +++ b/repoze/bfg/tests/test_urldispatch.py @@ -0,0 +1,85 @@ +import unittest + +class RoutesMapperTests(unittest.TestCase): + def _getEnviron(self, **kw): + environ = {'SERVER_NAME':'localhost', + 'wsgi.url_scheme':'http'} + environ.update(kw) + return environ + + def _getTargetClass(self): + from repoze.bfg.urldispatch import RoutesMapper + return RoutesMapper + + def _makeOne(self, get_root): + klass = self._getTargetClass() + return klass(get_root) + + def test_routes_mapper_no_route_matches(self): + marker = () + get_root = make_get_root(marker) + mapper = self._makeOne(get_root) + environ = self._getEnviron(PATH_INFO='/') + result = mapper(environ) + self.assertEqual(result, marker) + + def test_routes_mapper_route_matches(self): + marker = () + get_root = make_get_root(marker) + mapper = self._makeOne(get_root) + mapper.connect('archives/:action/:article', controller='foo') + environ = self._getEnviron(PATH_INFO='/archives/action1/article1') + result = mapper(environ) + self.assertEqual(result.controller, 'foo') + self.assertEqual(result.action, 'action1') + self.assertEqual(result.article, 'article1') + + def test_url_for(self): + marker = () + get_root = make_get_root(marker) + mapper = self._makeOne(get_root) + mapper.connect('archives/:action/:article', controller='foo') + environ = self._getEnviron(PATH_INFO='/archives/action1/article1') + result = mapper(environ) + from routes import url_for + result = url_for(controller='foo', action='action2', article='article2') + self.assertEqual(result, '/archives/action2/article2') + +class TestRoutesModelTraverser(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.urldispatch import RoutesModelTraverser + return RoutesModelTraverser + + def _makeOne(self, model, request): + klass = self._getTargetClass() + return klass(model, request) + + def test_class_conforms_to_ITraverser(self): + from zope.interface.verify import verifyClass + from repoze.bfg.interfaces import ITraverser + verifyClass(ITraverser, self._getTargetClass()) + + def test_instance_conforms_to_ITraverser(self): + from zope.interface.verify import verifyObject + from repoze.bfg.interfaces import ITraverser + verifyObject(ITraverser, self._makeOne(None, None)) + + def test_call(self): + model = DummyModel() + traverser = self._makeOne(model, None) + result = traverser({}) + self.assertEqual(result[0], model) + self.assertEqual(result[1], 'controller') + self.assertEqual(result[2], '') + +class DummyModel: + controller = 'controller' + +def make_get_root(result): + def dummy_get_root(environ): + return result + return dummy_get_root + + + + |
