diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-14 07:31:31 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-14 07:31:31 +0000 |
| commit | 85427fa0479aefd59bd55dca397b9a36277edade (patch) | |
| tree | cafad1ccb7d3f4c9a0b953adba78cd8caae70e93 /repoze/bfg/tests/test_zcml.py | |
| parent | 9fcb68e1563e22eed1fd7cbbd10993cff30242f8 (diff) | |
| download | pyramid-85427fa0479aefd59bd55dca397b9a36277edade.tar.gz pyramid-85427fa0479aefd59bd55dca397b9a36277edade.tar.bz2 pyramid-85427fa0479aefd59bd55dca397b9a36277edade.zip | |
Less magical templated view model: make custom template views responsible for
knowing their template's name.
Diffstat (limited to 'repoze/bfg/tests/test_zcml.py')
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 126 |
1 files changed, 94 insertions, 32 deletions
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index bcb065d9e..11f392f78 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -2,7 +2,7 @@ import unittest from zope.component.testing import PlacelessSetup -class TestPageDirective(unittest.TestCase, PlacelessSetup): +class TestViewDirective(unittest.TestCase, PlacelessSetup): def setUp(self): PlacelessSetup.setUp(self) @@ -10,8 +10,8 @@ class TestPageDirective(unittest.TestCase, PlacelessSetup): PlacelessSetup.tearDown(self) def _getFUT(self): - from repoze.bfg.zcml import page - return page + from repoze.bfg.zcml import view + return view def test_no_class_or_template(self): f = self._getFUT() @@ -29,45 +29,107 @@ class TestPageDirective(unittest.TestCase, PlacelessSetup): def test_only_template(self): f = self._getFUT() context = DummyContext() - f(context, 'repoze.view', None, template='minimal.pt') + class IFoo: + pass + f(context, 'repoze.view', IFoo, template='minimal.pt') actions = context.actions + from repoze.bfg.interfaces import IView from repoze.bfg.interfaces import IRequest from repoze.bfg.interfaces import IViewFactory from zope.component.zcml import handler - expected0 = ('view', None, '', IRequest, IViewFactory) - expected1 = handler - self.assertEqual(actions[0]['discriminator'], expected0) - self.assertEqual(actions[0]['callable'], expected1) - self.assertEqual(actions[0]['args'][0], 'registerAdapter') - import types - self.failUnless(isinstance(actions[0]['args'][1], types.FunctionType)) - self.assertEqual(actions[0]['args'][2], (None, IRequest)) - self.assertEqual(actions[0]['args'][3], IViewFactory) - self.assertEqual(actions[0]['args'][4], '') - self.assertEqual(actions[0]['args'][5], None) - - def test_template_and_class(self): + from zope.component.interface import provideInterface + + self.assertEqual(len(actions), 3) + + regutil_discriminator = ('utility', IView, context.path('minimal.pt')) + regutil = actions[0] + self.assertEqual(regutil['discriminator'], regutil_discriminator) + self.assertEqual(regutil['callable'], handler) + self.assertEqual(regutil['args'][0], 'registerUtility') + self.assertEqual(regutil['args'][1].template.filename, + context.path('minimal.pt')) + self.assertEqual(regutil['args'][2], IView) + self.assertEqual(regutil['args'][3], context.path('minimal.pt')) + + provide = actions[1] + self.assertEqual(provide['discriminator'], None) + self.assertEqual(provide['callable'], provideInterface) + self.assertEqual(provide['args'][0], '') + self.assertEqual(provide['args'][1], IFoo) + + regadapt = actions[2] + regadapt_discriminator = ('view', IFoo, '', IRequest, IViewFactory) + self.assertEqual(regadapt['discriminator'], regadapt_discriminator) + self.assertEqual(regadapt['callable'], handler) + self.assertEqual(regadapt['args'][0], 'registerAdapter') + self.assertEqual(regadapt['args'][1].template, + context.path('minimal.pt')) + self.assertEqual(regadapt['args'][2], (IFoo, IRequest)) + self.assertEqual(regadapt['args'][3], IViewFactory) + self.assertEqual(regadapt['args'][4], '') + self.assertEqual(regadapt['args'][5], None) + + def test_only_factory(self): f = self._getFUT() context = DummyContext() - f(context, 'repoze.view', None, template='minimal.pt', - class_=DummyViewClass) + class IFoo: + pass + f(context, 'repoze.view', IFoo, factory=Dummy) actions = context.actions from repoze.bfg.interfaces import IRequest from repoze.bfg.interfaces import IViewFactory from zope.component.zcml import handler - expected0 = ('view', None, '', IRequest, IViewFactory) - expected1 = handler - self.assertEqual(actions[0]['discriminator'], expected0) - self.assertEqual(actions[0]['callable'], expected1) - self.assertEqual(actions[0]['args'][0], 'registerAdapter') - import types - self.failUnless(isinstance(actions[0]['args'][1], types.FunctionType)) - self.assertEqual(actions[0]['args'][2], (None, IRequest)) - self.assertEqual(actions[0]['args'][3], IViewFactory) - self.assertEqual(actions[0]['args'][4], '') - self.assertEqual(actions[0]['args'][5], None) - -class DummyViewClass: + from zope.component.interface import provideInterface + + self.assertEqual(len(actions), 2) + + provide = actions[0] + self.assertEqual(provide['discriminator'], None) + self.assertEqual(provide['callable'], provideInterface) + self.assertEqual(provide['args'][0], '') + self.assertEqual(provide['args'][1], IFoo) + + regadapt = actions[1] + regadapt_discriminator = ('view', IFoo, '', IRequest, IViewFactory) + self.assertEqual(regadapt['discriminator'], regadapt_discriminator) + self.assertEqual(regadapt['callable'], handler) + self.assertEqual(regadapt['args'][0], 'registerAdapter') + self.assertEqual(regadapt['args'][1], Dummy) + self.assertEqual(regadapt['args'][2], (IFoo, IRequest)) + self.assertEqual(regadapt['args'][3], IViewFactory) + self.assertEqual(regadapt['args'][4], '') + self.assertEqual(regadapt['args'][5], None) + + def test_template_and_factory_raises(self): + f = self._getFUT() + context = DummyContext() + from zope.configuration.exceptions import ConfigurationError + self.assertRaises(ConfigurationError, f, context, 'repoze.view', None, + Dummy, 'minimal.html', 'minimal.pt') + +class TestTemplateViewFactory(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.zcml import TemplateViewFactory + return TemplateViewFactory + + def _makeOne(self, template): + return self._getTargetClass()(template) + + def test_instance_conforms_to_IViewFactory(self): + from zope.interface.verify import verifyObject + from repoze.bfg.interfaces import IViewFactory + verifyObject(IViewFactory, self._makeOne('a')) + + def test_call(self): + context = DummyContext() + template = context.path('minimal.pt') + factory = self._makeOne(template) + view = factory(None, None) + from repoze.bfg.view import TemplateView + self.failUnless(isinstance(view, TemplateView)) + + +class Dummy: pass class DummyContext: |
