import unittest from zope.component.testing import PlacelessSetup class Base(PlacelessSetup): def setUp(self): PlacelessSetup.setUp(self) def tearDown(self): PlacelessSetup.tearDown(self) def _zcmlConfigure(self): import repoze.bfg import zope.configuration.xmlconfig zope.configuration.xmlconfig.file('configure.zcml', package=repoze.bfg) def _getTemplatePath(self, name): import os here = os.path.abspath(os.path.dirname(__file__)) return os.path.join(here, 'fixtures', name) class PageTemplateFileTests(unittest.TestCase, Base): def setUp(self): Base.setUp(self) def tearDown(self): Base.tearDown(self) def _getTargetClass(self): from repoze.bfg.template import PageTemplateFile return PageTemplateFile def _makeOne(self, *arg, **kw): klass = self._getTargetClass() return klass(*arg, **kw) def test_render(self): self._zcmlConfigure() minimal = self._getTemplatePath('minimal.pt') instance = self._makeOne(minimal) result = instance.render() 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): def setUp(self): Base.setUp(self) def tearDown(self): Base.tearDown(self) def _getTargetClass(self): from repoze.bfg.template import TemplateView return TemplateView def _makeOne(self, *arg, **kw): klass = self._getTargetClass() return klass(*arg, **kw) def test_call(self): view = self._makeOne(None, None) _marker = () view.index = lambda *arg, **kw: _marker result = view('foo') self.assertEqual(result, _marker) class DummyPageTemplateFile: def render(self, *arg, **kw): return arg, kw