summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-08 04:37:07 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-08 04:37:07 +0000
commit4bf7723f67b49cb14f0d82511a924adc1147505c (patch)
treecd60d3acdb8deca1cbc40b984dbadedb71ccafc3 /repoze/bfg/tests
parent703422d397607eefb5fe695c657e5b59991ed9c1 (diff)
downloadpyramid-4bf7723f67b49cb14f0d82511a924adc1147505c.tar.gz
pyramid-4bf7723f67b49cb14f0d82511a924adc1147505c.tar.bz2
pyramid-4bf7723f67b49cb14f0d82511a924adc1147505c.zip
Add a browser:page directive type and make our sample app use it.
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/fixtures/minimal.pt3
-rw-r--r--repoze/bfg/tests/test_metaconfigure.py92
-rw-r--r--repoze/bfg/tests/test_template.py103
3 files changed, 198 insertions, 0 deletions
diff --git a/repoze/bfg/tests/fixtures/minimal.pt b/repoze/bfg/tests/fixtures/minimal.pt
new file mode 100644
index 000000000..693d155ef
--- /dev/null
+++ b/repoze/bfg/tests/fixtures/minimal.pt
@@ -0,0 +1,3 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:tal="http://xml.zope.org/namespaces/tal">
+</div>
diff --git a/repoze/bfg/tests/test_metaconfigure.py b/repoze/bfg/tests/test_metaconfigure.py
new file mode 100644
index 000000000..e349abe5d
--- /dev/null
+++ b/repoze/bfg/tests/test_metaconfigure.py
@@ -0,0 +1,92 @@
+import unittest
+
+from zope.component.testing import PlacelessSetup
+
+class TestPageDirective(unittest.TestCase, PlacelessSetup):
+ def setUp(self):
+ PlacelessSetup.setUp(self)
+
+ def tearDown(self):
+ PlacelessSetup.tearDown(self)
+
+ def _getFUT(self):
+ from repoze.bfg.metaconfigure import page
+ return page
+
+ def test_no_class_or_template(self):
+ f = self._getFUT()
+ from zope.configuration.exceptions import ConfigurationError
+ context = DummyContext()
+ self.assertRaises(ConfigurationError, f, context, 'repoze.view', None)
+
+ def test_no_such_file(self):
+ f = self._getFUT()
+ from zope.configuration.exceptions import ConfigurationError
+ context = DummyContext()
+ self.assertRaises(ConfigurationError, f, context, 'repoze.view', None,
+ template='notthere.pt')
+
+ def test_only_template(self):
+ f = self._getFUT()
+ context = DummyContext()
+ f(context, 'repoze.view', None, template='minimal.pt')
+ 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)
+
+ def test_template_and_class(self):
+ f = self._getFUT()
+ context = DummyContext()
+ f(context, 'repoze.view', None, template='minimal.pt',
+ class_=DummyViewClass)
+ 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:
+ pass
+
+class DummyContext:
+ def __init__(self):
+ self.actions = []
+ self.info = None
+
+ def path(self, name):
+ import os
+ here = os.path.dirname(__file__)
+ fixtures = os.path.join(here, 'fixtures')
+ return os.path.join(fixtures, name)
+
+ def action(self, discriminator, callable, args):
+ self.actions.append(
+ {'discriminator':discriminator,
+ 'callable':callable,
+ 'args':args}
+ )
+
+
+
diff --git a/repoze/bfg/tests/test_template.py b/repoze/bfg/tests/test_template.py
new file mode 100644
index 000000000..67f4e3c47
--- /dev/null
+++ b/repoze/bfg/tests/test_template.py
@@ -0,0 +1,103 @@
+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, ['<div>\n</div>'])
+ 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()
+ minimal = self._getTemplatePath('minimal.pt')
+ instance = self._makeOne(minimal)
+ class View:
+ context = 'context'
+ request = 'request'
+ view = View()
+ template = instance.render(view)
+ result = template()
+ from webob import Response
+ self.failUnless(isinstance(result, Response))
+ self.assertEqual(result.app_iter, ['<div>\n</div>'])
+ self.assertEqual(result.status, '200 OK')
+ self.assertEqual(len(result.headerlist), 2)
+
+class BrowserViewTests(unittest.TestCase, Base):
+ def setUp(self):
+ Base.setUp(self)
+
+ def tearDown(self):
+ Base.tearDown(self)
+
+ def _getTargetClass(self):
+ from repoze.bfg.template import BrowserView
+ return BrowserView
+
+ 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)
+
+
+