summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_view.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-16 04:56:49 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-16 04:56:49 +0000
commita9fed7675d8da572dee840676714b2653e3f7f79 (patch)
tree93327afae95fb9cf6b1d0cb72da265af42a705bd /repoze/bfg/tests/test_view.py
parenta37220b84dee4cc8b1b12f34643ce97dad89ffe1 (diff)
downloadpyramid-a9fed7675d8da572dee840676714b2653e3f7f79.tar.gz
pyramid-a9fed7675d8da572dee840676714b2653e3f7f79.tar.bz2
pyramid-a9fed7675d8da572dee840676714b2653e3f7f79.zip
Checkpoint. Not 100% test coverage.
Diffstat (limited to 'repoze/bfg/tests/test_view.py')
-rw-r--r--repoze/bfg/tests/test_view.py142
1 files changed, 110 insertions, 32 deletions
diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py
index 5639e9799..3106359a3 100644
--- a/repoze/bfg/tests/test_view.py
+++ b/repoze/bfg/tests/test_view.py
@@ -631,6 +631,25 @@ class Test_map_view(unittest.TestCase):
from repoze.bfg.view import map_view
return map_view(view, *arg, **kw)
+ def _registerRenderer(self):
+ from repoze.bfg.interfaces import IRendererFactory
+ from repoze.bfg.interfaces import ITemplateRenderer
+ from zope.interface import implements
+ from zope.component import getSiteManager
+ class Renderer:
+ implements(ITemplateRenderer)
+ def __call__(self, *arg):
+ return 'Hello!'
+
+ class RendererFactory:
+ def __call__(self, path):
+ self.path = path
+ return Renderer()
+
+ factory = RendererFactory()
+ sm = getSiteManager()
+ sm.registerUtility(factory, IRendererFactory, name='.txt')
+
def test_view_as_function_context_and_request(self):
def view(context, request):
return 'OK'
@@ -646,10 +665,11 @@ class Test_map_view(unittest.TestCase):
self.assertRaises(TypeError, result, None, None)
def test_view_as_function_with_attr_and_template(self):
+ self._registerRenderer()
def view(context, request):
""" """
result = self._callFUT(view, attr='__name__',
- template='fixtures/minimal.txt')
+ renderer='fixtures/minimal.txt')
self.failIf(result is view)
self.assertRaises(TypeError, result, None, None)
@@ -701,18 +721,20 @@ class Test_map_view(unittest.TestCase):
def test_view_as_newstyle_class_context_and_request_with_attr_and_template(
self):
+ self._registerRenderer()
class view(object):
def __init__(self, context, request):
pass
def index(self):
return {'a':'1'}
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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__)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_as_newstyle_class_requestonly(self):
class view(object):
@@ -741,18 +763,20 @@ class Test_map_view(unittest.TestCase):
self.assertEqual(result(None, None), 'OK')
def test_view_as_newstyle_class_requestonly_with_attr_and_template(self):
+ self._registerRenderer()
class view(object):
def __init__(self, request):
pass
def index(self):
return {'a':'1'}
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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__)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_as_oldstyle_class_context_and_request(self):
class view:
@@ -782,18 +806,20 @@ class Test_map_view(unittest.TestCase):
def test_view_as_oldstyle_class_context_and_request_with_attr_and_template(
self):
+ self._registerRenderer()
class view:
def __init__(self, context, request):
pass
def index(self):
return {'a':'1'}
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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__)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_as_oldstyle_class_requestonly(self):
class view:
@@ -822,18 +848,20 @@ class Test_map_view(unittest.TestCase):
self.assertEqual(result(None, None), 'OK')
def test_view_as_oldstyle_class_requestonly_with_attr_and_template(self):
+ self._registerRenderer()
class view:
def __init__(self, request):
pass
def index(self):
return {'a':'1'}
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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__)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_as_instance_context_and_request(self):
class View:
@@ -854,14 +882,16 @@ class Test_map_view(unittest.TestCase):
self.assertEqual(result(None, None), 'OK')
def test_view_as_instance_context_and_request_attr_and_template(self):
+ self._registerRenderer()
class View:
def index(self, context, request):
return {'a':'1'}
view = View()
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='repoze.bfg.tests:fixtures/minimal.txt')
self.failIf(result is view)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_as_instance_requestonly(self):
class View:
@@ -888,27 +918,31 @@ class Test_map_view(unittest.TestCase):
self.assertEqual(result(None, None), 'OK')
def test_view_as_instance_requestonly_with_attr_and_template(self):
+ self._registerRenderer()
class View:
def index(self, request):
return {'a':'1'}
view = View()
result = self._callFUT(view, attr='index',
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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__)
- self.assertEqual(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
def test_view_templateonly(self):
+ self._registerRenderer()
def view(context, request):
return {'a':'1'}
result = self._callFUT(view,
- template='repoze.bfg.tests:fixtures/minimal.txt')
+ renderer='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(result(None, None).body, 'Hello.\n')
+ request = DummyRequest()
+ self.assertEqual(result(None, request).body, 'Hello!')
class TestRequestOnly(unittest.TestCase):
def _callFUT(self, arg):
@@ -1112,7 +1146,7 @@ class TestDecorateView(unittest.TestCase):
self.failUnless(view1.__predicated__.im_func is
view2.__predicated__.im_func)
-class Test_templated_response(unittest.TestCase):
+class Test_rendered_response(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -1120,61 +1154,105 @@ class Test_templated_response(unittest.TestCase):
cleanUp()
def _callFUT(self, template_name, response, view=None,
- context=None, request=None, auto_reload=False):
- from repoze.bfg.view import templated_response
- return templated_response(template_name, response, view, context,
- request, auto_reload)
+ context=None, request=None):
+ from repoze.bfg.view import rendered_response
+ if request is None:
+ request = DummyRequest()
+ return rendered_response(template_name, response, view, context,
+ request)
+
+ def _registerRenderer(self):
+ from repoze.bfg.interfaces import IRendererFactory
+ from repoze.bfg.interfaces import ITemplateRenderer
+ from zope.interface import implements
+ from zope.component import getSiteManager
+ class Renderer:
+ implements(ITemplateRenderer)
+ def __call__(self, *arg):
+ return 'Hello!'
+
+ class RendererFactory:
+ def __call__(self, path):
+ self.path = path
+ return Renderer()
+
+ factory = RendererFactory()
+ sm = getSiteManager()
+ sm.registerUtility(factory, IRendererFactory, name='.txt')
def test_is_response(self):
+ self._registerRenderer()
response = DummyResponse()
result = self._callFUT(
'repoze.bfg.tests:fixtures/minimal.txt', response)
self.assertEqual(result, response)
def test_is_not_valid_dict(self):
+ self._registerRenderer()
response = None
result = self._callFUT(
'repoze.bfg.tests:fixtures/minimal.txt', response)
self.assertEqual(result, response)
def test_valid_dict(self):
+ self._registerRenderer()
response = {'a':'1'}
result = self._callFUT(
'repoze.bfg.tests:fixtures/minimal.txt', response)
- self.assertEqual(result.body, 'Hello.\n')
+ self.assertEqual(result.body, 'Hello!')
def test_with_content_type(self):
- response = {'a':'1', 'content_type_':'text/nonsense'}
+ self._registerRenderer()
+ response = {'a':'1'}
+ request = DummyRequest()
+ attrs = {'response_content_type':'text/nonsense'}
+ request.environ['webob.adhoc_attrs'] = attrs
result = self._callFUT(
- 'repoze.bfg.tests:fixtures/minimal.txt', response)
+ 'repoze.bfg.tests:fixtures/minimal.txt', response, request=request)
self.assertEqual(result.content_type, 'text/nonsense')
def test_with_headerlist(self):
- response = {'a':'1', 'headerlist_':[('a', '1'), ('b', '2')]}
+ self._registerRenderer()
+ response = {'a':'1'}
+ request = DummyRequest()
+ attrs = {'response_headerlist':[('a', '1'), ('b', '2')]}
+ request.environ['webob.adhoc_attrs'] = attrs
result = self._callFUT(
- 'repoze.bfg.tests:fixtures/minimal.txt', response)
+ 'repoze.bfg.tests:fixtures/minimal.txt', response, request=request)
self.assertEqual(result.headerlist,
[('Content-Type', 'text/html; charset=UTF-8'),
- ('Content-Length', '7'),
+ ('Content-Length', '6'),
('a', '1'),
('b', '2')])
def test_with_status(self):
- response = {'a':'1', 'status_':'406 You Lose'}
+ self._registerRenderer()
+ response = {'a':'1'}
+ request = DummyRequest()
+ attrs = {'response_status':'406 You Lose'}
+ request.environ['webob.adhoc_attrs'] = attrs
result = self._callFUT(
- 'repoze.bfg.tests:fixtures/minimal.txt', response)
+ 'repoze.bfg.tests:fixtures/minimal.txt', response, request=request)
self.assertEqual(result.status, '406 You Lose')
def test_with_charset(self):
- response = {'a':'1', 'charset_':'UTF-16'}
+ self._registerRenderer()
+ response = {'a':'1'}
+ request = DummyRequest()
+ attrs = {'response_charset':'UTF-16'}
+ request.environ['webob.adhoc_attrs'] = attrs
result = self._callFUT(
- 'repoze.bfg.tests:fixtures/minimal.txt', response)
+ 'repoze.bfg.tests:fixtures/minimal.txt', response, request=request)
self.assertEqual(result.charset, 'UTF-16')
def test_with_cache_for(self):
- response = {'a':'1', 'cache_for_':100}
+ self._registerRenderer()
+ response = {'a':'1'}
+ request = DummyRequest()
+ attrs = {'response_cache_for':100}
+ request.environ['webob.adhoc_attrs'] = attrs
result = self._callFUT(
- 'repoze.bfg.tests:fixtures/minimal.txt', response)
+ 'repoze.bfg.tests:fixtures/minimal.txt', response, request=request)
self.assertEqual(result.cache_control.max_age, 100)
class DummyContext: