From e4610566d881f707c01d266a7e336084029c83e4 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 20 Sep 2009 22:13:11 +0000 Subject: - 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. --- repoze/bfg/tests/test_integration.py | 117 ++++++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 30 deletions(-) (limited to 'repoze/bfg/tests/test_integration.py') 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 -- cgit v1.2.3