From 85427fa0479aefd59bd55dca397b9a36277edade Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 14 Jul 2008 07:31:31 +0000 Subject: Less magical templated view model: make custom template views responsible for knowing their template's name. --- repoze/bfg/tests/test_template.py | 117 +++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 52 deletions(-) (limited to 'repoze/bfg/tests/test_template.py') diff --git a/repoze/bfg/tests/test_template.py b/repoze/bfg/tests/test_template.py index 322810fb4..59dce3efa 100644 --- a/repoze/bfg/tests/test_template.py +++ b/repoze/bfg/tests/test_template.py @@ -19,8 +19,7 @@ class Base(PlacelessSetup): here = os.path.abspath(os.path.dirname(__file__)) return os.path.join(here, 'fixtures', name) - -class PageTemplateFileTests(unittest.TestCase, Base): +class Z3CPTTemplateFactoryTests(unittest.TestCase, Base): def setUp(self): Base.setUp(self) @@ -28,76 +27,90 @@ class PageTemplateFileTests(unittest.TestCase, Base): Base.tearDown(self) def _getTargetClass(self): - from repoze.bfg.template import PageTemplateFile - return PageTemplateFile + from repoze.bfg.template import Z3CPTTemplateFactory + return Z3CPTTemplateFactory def _makeOne(self, *arg, **kw): klass = self._getTargetClass() return klass(*arg, **kw) - def test_render(self): + def test_instance_conforms_to_IView(self): + from zope.interface.verify import verifyObject + from repoze.bfg.interfaces import IView + path = self._getTemplatePath('minimal.pt') + verifyObject(IView, self._makeOne(path)) + + def test_class_conforms_to_IView(self): + from zope.interface.verify import verifyClass + from repoze.bfg.interfaces import IView + verifyClass(IView, self._getTargetClass()) + + def test_class_conforms_to_ITemplateFactory(self): + from zope.interface.verify import verifyObject + from repoze.bfg.interfaces import ITemplateFactory + verifyObject(ITemplateFactory, self._getTargetClass()) + + def test_call(self): self._zcmlConfigure() minimal = self._getTemplatePath('minimal.pt') instance = self._makeOne(minimal) - result = instance.render() + result = instance() from webob import Response self.failUnless(isinstance(result, Response)) self.assertEqual(result.app_iter, ['
\n
']) self.assertEqual(result.status, '200 OK') self.assertEqual(len(result.headerlist), 2) - -class ViewPageTemplateFileTests(unittest.TestCase, Base): - def setUp(self): - Base.setUp(self) - def tearDown(self): - Base.tearDown(self) - - def _getTargetClass(self): - from repoze.bfg.template import ViewPageTemplateFile - return ViewPageTemplateFile - - def _makeOne(self, *arg, **kw): - klass = self._getTargetClass() - return klass(*arg, **kw) - - def test_render(self): - self._zcmlConfigure() - f = DummyPageTemplateFile() - instance = self._makeOne(f) - class View: - context = 'context' - request = 'request' - view = View() - template = instance.render(view) - args, kw = template(foo='bar') - self.assertEqual(kw['request'], 'request') - self.assertEqual(kw['options'], {'foo':'bar'}) - self.assertEqual(kw['context'], 'context') - self.assertEqual(kw['view'], view) - -class TemplateViewTests(unittest.TestCase, Base): +class RenderTemplateTests(unittest.TestCase, Base): def setUp(self): Base.setUp(self) def tearDown(self): Base.tearDown(self) - def _getTargetClass(self): - from repoze.bfg.template import TemplateView - return TemplateView + def _getFUT(self): + from repoze.bfg.template import render_template + return render_template - def _makeOne(self, *arg, **kw): - klass = self._getTargetClass() - return klass(*arg, **kw) + def test_nonabs_unregistered(self): + self._zcmlConfigure() + from zope.component import queryUtility + from repoze.bfg.interfaces import IView + minimal = self._getTemplatePath('minimal.pt') + self.assertEqual(queryUtility(IView, minimal), None) + view = DummyView() + render = self._getFUT() + result = render(view, minimal) + from webob import Response + self.failUnless(isinstance(result, Response)) + self.assertEqual(result.app_iter, ['
\n
']) + self.assertEqual(result.status, '200 OK') + self.assertEqual(len(result.headerlist), 2) + from repoze.bfg.template import Z3CPTTemplateFactory + self.failUnless(isinstance(queryUtility(IView, minimal), + Z3CPTTemplateFactory)) - def test_call(self): - view = self._makeOne(None, None) - _marker = () - view.index = lambda *arg, **kw: _marker - result = view('foo') - self.assertEqual(result, _marker) + def test_nonabs_registered(self): + self._zcmlConfigure() + from zope.component import getGlobalSiteManager + from zope.component import queryUtility + from repoze.bfg.template import Z3CPTTemplateFactory + from repoze.bfg.interfaces import IView + minimal = self._getTemplatePath('minimal.pt') + utility = Z3CPTTemplateFactory(minimal) + gsm = getGlobalSiteManager() + gsm.registerUtility(utility, IView, name=minimal) + view = DummyView() + render = self._getFUT() + result = render(view, minimal) + from webob import Response + self.failUnless(isinstance(result, Response)) + self.assertEqual(result.app_iter, ['
\n
']) + self.assertEqual(result.status, '200 OK') + self.assertEqual(len(result.headerlist), 2) + self.assertEqual(queryUtility(IView, minimal), utility) + +class DummyView: + context = 'context' + request = 'request' -class DummyPageTemplateFile: - def render(self, *arg, **kw): - return arg, kw -- cgit v1.2.3