summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_urldispatch.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-22 11:02:28 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-22 11:02:28 +0000
commit8392d7094c96f777f6d1d5f0c62051702191d106 (patch)
tree6fd39e2c10fc33a5b2be08e7467c9e6ad0887b78 /repoze/bfg/tests/test_urldispatch.py
parentb584143b2c408b979c340939f48b8a4ffe725e62 (diff)
downloadpyramid-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.py85
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
+
+
+
+