summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_registry.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-11-16 22:05:17 +0000
committerChris McDonough <chrism@agendaless.com>2009-11-16 22:05:17 +0000
commite06153d2a851513c435b9f7dc2a5d8f3a1191405 (patch)
treef64ffefb1dc6b0894f3a254e919f48148f330b49 /repoze/bfg/tests/test_registry.py
parent58fdd1e948b7223cbcaf4fdceb159de200356d79 (diff)
downloadpyramid-e06153d2a851513c435b9f7dc2a5d8f3a1191405.tar.gz
pyramid-e06153d2a851513c435b9f7dc2a5d8f3a1191405.tar.bz2
pyramid-e06153d2a851513c435b9f7dc2a5d8f3a1191405.zip
Failing one test.
Diffstat (limited to 'repoze/bfg/tests/test_registry.py')
-rw-r--r--repoze/bfg/tests/test_registry.py373
1 files changed, 372 insertions, 1 deletions
diff --git a/repoze/bfg/tests/test_registry.py b/repoze/bfg/tests/test_registry.py
index 3eada7b1c..11f5cbf3a 100644
--- a/repoze/bfg/tests/test_registry.py
+++ b/repoze/bfg/tests/test_registry.py
@@ -61,6 +61,355 @@ class TestRegistry(unittest.TestCase):
self.assertEqual(overrides.inserted, [('path', 'opackage', 'oprefix')])
self.assertEqual(overrides.package, package)
+ def _registerRenderer(self, reg, name='.txt'):
+ from repoze.bfg.interfaces import IRendererFactory
+ from repoze.bfg.interfaces import ITemplateRenderer
+ from zope.interface import implements
+ class Renderer:
+ implements(ITemplateRenderer)
+ def __init__(self, path):
+ pass
+ def __call__(self, *arg):
+ return 'Hello!'
+ reg.registerUtility(Renderer, IRendererFactory, name=name)
+
+ def test_map_view_as_function_context_and_request(self):
+ def view(context, request):
+ return 'OK'
+ reg = self._makeOne()
+ result = reg.map_view(view)
+ self.failUnless(result is view)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_function_with_attr(self):
+ def view(context, request):
+ """ """
+ reg = self._makeOne()
+ result = reg.map_view(view, attr='__name__')
+ self.failIf(result is view)
+ self.assertRaises(TypeError, result, None, None)
+
+ def test_map_view_as_function_with_attr_and_renderer(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ def view(context, request):
+ """ """
+ result = reg.map_view(view, attr='__name__',
+ renderer_name='fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertRaises(TypeError, result, None, None)
+
+ def test_map_view_as_function_requestonly(self):
+ reg = self._makeOne()
+ def view(request):
+ return 'OK'
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_function_requestonly_with_attr(self):
+ reg = self._makeOne()
+ def view(request):
+ """ """
+ result = reg.map_view(view, attr='__name__')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertRaises(TypeError, result, None, None)
+
+ def test_map_view_as_newstyle_class_context_and_request(self):
+ reg = self._makeOne()
+ class view(object):
+ def __init__(self, context, request):
+ pass
+ def __call__(self):
+ return 'OK'
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_newstyle_class_context_and_request_with_attr(self):
+ reg = self._makeOne()
+ class view(object):
+ def __init__(self, context, request):
+ pass
+ def index(self):
+ return 'OK'
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_newstyle_class_context_and_request_attr_and_renderer(
+ self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class view(object):
+ def __init__(self, context, request):
+ pass
+ def index(self):
+ return {'a':'1'}
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_as_newstyle_class_requestonly(self):
+ reg = self._makeOne()
+ class view(object):
+ def __init__(self, request):
+ pass
+ def __call__(self):
+ return 'OK'
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_newstyle_class_requestonly_with_attr(self):
+ reg = self._makeOne()
+ class view(object):
+ def __init__(self, request):
+ pass
+ def index(self):
+ return 'OK'
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_newstyle_class_requestonly_with_attr_and_renderer(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class view(object):
+ def __init__(self, request):
+ pass
+ def index(self):
+ return {'a':'1'}
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_as_oldstyle_class_context_and_request(self):
+ reg = self._makeOne()
+ class view:
+ def __init__(self, context, request):
+ pass
+ def __call__(self):
+ return 'OK'
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_oldstyle_class_context_and_request_with_attr(self):
+ reg = self._makeOne()
+ class view:
+ def __init__(self, context, request):
+ pass
+ def index(self):
+ return 'OK'
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_oldstyle_class_context_and_request_attr_and_renderer(
+ self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class view:
+ def __init__(self, context, request):
+ pass
+ def index(self):
+ return {'a':'1'}
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_as_oldstyle_class_requestonly(self):
+ reg = self._makeOne()
+ class view:
+ def __init__(self, request):
+ pass
+ def __call__(self):
+ return 'OK'
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_oldstyle_class_requestonly_with_attr(self):
+ reg = self._makeOne()
+ class view:
+ def __init__(self, request):
+ pass
+ def index(self):
+ return 'OK'
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_oldstyle_class_requestonly_attr_and_renderer(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class view:
+ def __init__(self, request):
+ pass
+ def index(self):
+ return {'a':'1'}
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_as_instance_context_and_request(self):
+ reg = self._makeOne()
+ class View:
+ def __call__(self, context, request):
+ return 'OK'
+ view = View()
+ result = reg.map_view(view)
+ self.failUnless(result is view)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_instance_context_and_request_and_attr(self):
+ reg = self._makeOne()
+ class View:
+ def index(self, context, request):
+ return 'OK'
+ view = View()
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_instance_context_and_request_attr_and_renderer(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class View:
+ def index(self, context, request):
+ return {'a':'1'}
+ view = View()
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_as_instance_requestonly(self):
+ reg = self._makeOne()
+ class View:
+ def __call__(self, request):
+ return 'OK'
+ view = View()
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.failUnless('instance' in result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_instance_requestonly_with_attr(self):
+ reg = self._makeOne()
+ class View:
+ def index(self, request):
+ return 'OK'
+ view = View()
+ result = reg.map_view(view, attr='index')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.failUnless('instance' in result.__name__)
+ self.assertEqual(result(None, None), 'OK')
+
+ def test_map_view_as_instance_requestonly_with_attr_and_renderer(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ class View:
+ def index(self, request):
+ return {'a':'1'}
+ view = View()
+ result = reg.map_view(
+ view, attr='index',
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.failUnless('instance' in result.__name__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_rendereronly(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg)
+ def view(context, request):
+ return {'a':'1'}
+ result = reg.map_view(
+ view,
+ renderer_name='repoze.bfg.tests:fixtures/minimal.txt')
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
+ def test_map_view_defaultrendereronly(self):
+ reg = self._makeOne()
+ self._registerRenderer(reg, name='')
+ def view(context, request):
+ return {'a':'1'}
+ result = reg.map_view(view)
+ self.failIf(result is view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
+
class TestBFGViewGrokker(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -133,7 +482,6 @@ class TestDefaultRootFactory(unittest.TestCase):
self.assertEqual(root.a, 1)
self.assertEqual(root.b, 2)
-
class DummyModule:
__path__ = "foo"
__name__ = "dummy"
@@ -157,3 +505,26 @@ class DummyOverrides:
def insert(self, path, package, prefix):
self.inserted.append((path, package, prefix))
+
+class DummyRequest:
+ def __init__(self, environ=None):
+ if environ is None:
+ environ = {}
+ self.environ = environ
+
+ def get_response(self, application):
+ return application
+
+ def copy(self):
+ self.copied = True
+ return self
+
+class DummyResponse:
+ status = '200 OK'
+ headerlist = ()
+ def __init__(self, body=None):
+ if body is None:
+ self.app_iter = ()
+ else:
+ self.app_iter = [body]
+