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