summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_integration.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-20 22:13:11 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-20 22:13:11 +0000
commite4610566d881f707c01d266a7e336084029c83e4 (patch)
tree0a2001361b14e5b0b7521164e67560e2763e4c3c /repoze/bfg/tests/test_integration.py
parent160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a (diff)
downloadpyramid-e4610566d881f707c01d266a7e336084029c83e4.tar.gz
pyramid-e4610566d881f707c01d266a7e336084029c83e4.tar.bz2
pyramid-e4610566d881f707c01d266a7e336084029c83e4.zip
- The way ``bfg_view`` declarations are scanned for has been modified.
This should have no external effects. - An object implementing the ``IRenderer`` interface (and ``ITemplateRenderer`, which is a subclass of ``IRenderer``) must now accept an extra ``system`` argument in its ``__call__`` method implementation. Values computed by the system (as opposed to by the view) are passed by the system in the ``system`` parameter, which will always be a dictionary. Keys in the dictionary include: ``view`` (the view object that returned the value), ``renderer_name`` (the template name or simple name of the renderer), ``context`` (the context object passed to the view), and ``request`` (the request object passed to the view). Previously only ITemplateRenderers received system arguments as elements inside the main ``value`` dictionary.
Diffstat (limited to 'repoze/bfg/tests/test_integration.py')
-rw-r--r--repoze/bfg/tests/test_integration.py117
1 files changed, 87 insertions, 30 deletions
diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py
index 681dcf043..bcd29d294 100644
--- a/repoze/bfg/tests/test_integration.py
+++ b/repoze/bfg/tests/test_integration.py
@@ -39,7 +39,7 @@ class WGSIAppPlusBFGViewTests(unittest.TestCase):
from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IView
from repoze.bfg.zcml import scan
- context = DummyContext()
+ context = DummyZCMLContext()
from repoze.bfg.tests import test_integration
scan(context, test_integration)
actions = context.actions
@@ -99,39 +99,96 @@ class TestGrokkedApp(unittest.TestCase):
cleanUp()
def test_it(self):
- import inspect
+ from repoze.bfg.view import render_view_to_response
+ from zope.interface import directlyProvides
+ from repoze.bfg.zcml import zcml_configure
from repoze.bfg.interfaces import IView
from repoze.bfg.interfaces import IRequest
import repoze.bfg.tests.grokkedapp as package
- from zope.configuration import config
- from zope.configuration import xmlconfig
- context = config.ConfigurationMachine()
- xmlconfig.registerCommonDirectives(context)
- context.package = package
- xmlconfig.include(context, 'configure.zcml', package)
- actions = context.actions
+ actions = zcml_configure('configure.zcml', package)
- postview = actions[-1]
- self.assertEqual(postview[0][1], None)
- self.assertEqual(postview[0][2], '')
- self.assertEqual(postview[0][3], IRequest)
- self.assertEqual(postview[0][4], IView)
+ action = actions[-1]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'another_oldstyle_grokked_class')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-2]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'another')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-3]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'another_grokked_class')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-4]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'another')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-5]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'oldstyle_grokked_class')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
- klassview = actions[-2]
- self.assertEqual(klassview[0][1], None)
- self.assertEqual(klassview[0][2], 'grokked_klass')
- self.assertEqual(klassview[0][3], IRequest)
- self.assertEqual(klassview[0][4], IView)
- self.failUnless(inspect.isfunction(package.grokked_klass))
- self.assertEqual(package.grokked_klass(None, None), None)
-
- funcview = actions[-3]
- self.assertEqual(funcview[0][1], None)
- self.assertEqual(funcview[0][2], '')
- self.assertEqual(funcview[0][3], IRequest)
- self.assertEqual(funcview[0][4], IView)
-
-class DummyContext:
+ action = actions[-6]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], '')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-7]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], 'grokked_class')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ action = actions[-8]
+ self.assertEqual(action[0][1], None)
+ self.assertEqual(action[0][2], '')
+ self.assertEqual(action[0][3], IRequest)
+ self.assertEqual(action[0][4], IView)
+
+ ctx = DummyContext()
+ req = DummyRequest()
+ directlyProvides(req, IRequest)
+
+ req.method = 'GET'
+ result = render_view_to_response(ctx, req, '')
+ self.assertEqual(result, 'grokked')
+
+ req.method = 'POST'
+ result = render_view_to_response(ctx, req, '')
+ self.assertEqual(result, 'grokked_post')
+
+ result= render_view_to_response(ctx, req, 'grokked_class')
+ self.assertEqual(result, 'grokked_class')
+
+ result= render_view_to_response(ctx, req, 'oldstyle_grokked_class')
+ self.assertEqual(result, 'oldstyle_grokked_class')
+
+ req.method = 'GET'
+ result = render_view_to_response(ctx, req, 'another')
+ self.assertEqual(result, 'another_grokked')
+
+ req.method = 'POST'
+ result = render_view_to_response(ctx, req, 'another')
+ self.assertEqual(result, 'another_grokked_post')
+
+ result= render_view_to_response(ctx, req, 'another_grokked_class')
+ self.assertEqual(result, 'another_grokked_class')
+
+ result= render_view_to_response(ctx, req,
+ 'another_oldstyle_grokked_class')
+ self.assertEqual(result, 'another_oldstyle_grokked_class')
+
+class DummyContext(object):
pass
class DummyRequest:
@@ -141,7 +198,7 @@ class DummyRequest:
def get_response(self, application):
return application(None, None)
-class DummyContext:
+class DummyZCMLContext:
def __init__(self):
self.actions = []
self.info = None