summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_renderers.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-16 04:56:49 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-16 04:56:49 +0000
commita9fed7675d8da572dee840676714b2653e3f7f79 (patch)
tree93327afae95fb9cf6b1d0cb72da265af42a705bd /repoze/bfg/tests/test_renderers.py
parenta37220b84dee4cc8b1b12f34643ce97dad89ffe1 (diff)
downloadpyramid-a9fed7675d8da572dee840676714b2653e3f7f79.tar.gz
pyramid-a9fed7675d8da572dee840676714b2653e3f7f79.tar.bz2
pyramid-a9fed7675d8da572dee840676714b2653e3f7f79.zip
Checkpoint. Not 100% test coverage.
Diffstat (limited to 'repoze/bfg/tests/test_renderers.py')
-rw-r--r--repoze/bfg/tests/test_renderers.py177
1 files changed, 177 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_renderers.py b/repoze/bfg/tests/test_renderers.py
new file mode 100644
index 000000000..aa159cc18
--- /dev/null
+++ b/repoze/bfg/tests/test_renderers.py
@@ -0,0 +1,177 @@
+import unittest
+
+from repoze.bfg.testing import cleanUp
+from repoze.bfg import testing
+
+class TestTemplateRendererFactory(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
+ def _callFUT(self, path, factory, level=3):
+ from repoze.bfg.renderers import template_renderer_factory
+ return template_renderer_factory(path, factory, level)
+
+ def test_abspath_notfound(self):
+ from repoze.bfg.interfaces import ITemplateRenderer
+ abspath = '/wont/exist'
+ testing.registerUtility({}, ITemplateRenderer, name=abspath)
+ self.assertRaises(ValueError, self._callFUT, abspath, None)
+
+ def test_abspath_alreadyregistered(self):
+ from repoze.bfg.interfaces import ITemplateRenderer
+ import os
+ abspath = os.path.abspath(__file__)
+ renderer = {}
+ testing.registerUtility(renderer, ITemplateRenderer, name=abspath)
+ result = self._callFUT(abspath, None)
+ self.failUnless(result is renderer)
+
+ def test_abspath_notyetregistered(self):
+ from repoze.bfg.interfaces import ITemplateRenderer
+ import os
+ abspath = os.path.abspath(__file__)
+ renderer = {}
+ testing.registerUtility(renderer, ITemplateRenderer, name=abspath)
+ result = self._callFUT(abspath, None)
+ self.failUnless(result is renderer)
+
+ def test_relpath_path_registered(self):
+ renderer = {}
+ from repoze.bfg.interfaces import ITemplateRenderer
+ testing.registerUtility(renderer, ITemplateRenderer, name='foo/bar')
+ result = self._callFUT('foo/bar', None)
+ self.failUnless(renderer is result)
+
+ def test_relpath_is_package_registered(self):
+ renderer = {}
+ from repoze.bfg.interfaces import ITemplateRenderer
+ testing.registerUtility(renderer, ITemplateRenderer, name='foo:bar/baz')
+ result = self._callFUT('foo:bar/baz', None)
+ self.failUnless(renderer is result)
+
+ def test_relpath_notfound(self):
+ self.assertRaises(ValueError, self._callFUT, 'wont/exist', None)
+
+ def test_relpath_is_package_notfound(self):
+ from repoze.bfg import tests
+ module_name = tests.__name__
+ self.assertRaises(ValueError, self._callFUT,
+ '%s:wont/exist' % module_name, None)
+
+ def test_relpath_alreadyregistered(self):
+ from repoze.bfg.interfaces import ITemplateRenderer
+ from repoze.bfg import tests
+ module_name = tests.__name__
+ relpath = 'test_templating.py'
+ spec = '%s:%s' % (module_name, relpath)
+ renderer = {}
+ testing.registerUtility(renderer, ITemplateRenderer, name=spec)
+ result = self._callFUT('test_templating.py', None)
+ self.failUnless(result is renderer)
+
+ def test_relpath_is_package_alreadyregistered(self):
+ from repoze.bfg.interfaces import ITemplateRenderer
+ from repoze.bfg import tests
+ module_name = tests.__name__
+ relpath = 'test_templating.py'
+ spec = '%s:%s' % (module_name, relpath)
+ renderer = {}
+ testing.registerUtility(renderer, ITemplateRenderer, name=spec)
+ result = self._callFUT(spec, None)
+ self.failUnless(result is renderer)
+
+ def test_relpath_notyetregistered(self):
+ import os
+ from repoze.bfg.tests import test_templating
+ module_name = test_templating.__name__
+ relpath = 'test_renderers.py'
+ renderer = {}
+ factory = DummyFactory(renderer)
+ result = self._callFUT('test_renderers.py', factory)
+ self.failUnless(result is renderer)
+ path = os.path.abspath(__file__)
+ if path.endswith('pyc'): # pragma: no cover
+ path = path[:-1]
+ self.assertEqual(factory.path, path)
+ self.assertEqual(factory.kw, {})
+
+ def test_relpath_is_package_notyetregistered(self):
+ import os
+ from repoze.bfg import tests
+ module_name = tests.__name__
+ relpath = 'test_renderers.py'
+ renderer = {}
+ factory = DummyFactory(renderer)
+ spec = '%s:%s' % (module_name, relpath)
+ result = self._callFUT(spec, factory)
+ self.failUnless(result is renderer)
+ path = os.path.abspath(__file__)
+ if path.endswith('pyc'): # pragma: no cover
+ path = path[:-1]
+ self.assertEqual(factory.path, path)
+ self.assertEqual(factory.kw, {})
+
+ def test_reload_resources_true(self):
+ from zope.component import queryUtility
+ from repoze.bfg.interfaces import ISettings
+ from repoze.bfg.interfaces import ITemplateRenderer
+ settings = {'reload_resources':True}
+ testing.registerUtility(settings, ISettings)
+ renderer = {}
+ factory = DummyFactory(renderer)
+ result = self._callFUT('test_renderers.py', factory)
+ self.failUnless(result is renderer)
+ spec = '%s:%s' % ('repoze.bfg.tests', 'test_renderers.py')
+ self.assertEqual(queryUtility(ITemplateRenderer, name=spec),
+ None)
+
+ def test_reload_resources_false(self):
+ from zope.component import queryUtility
+ from repoze.bfg.interfaces import ISettings
+ from repoze.bfg.interfaces import ITemplateRenderer
+ settings = {'reload_resources':False}
+ testing.registerUtility(settings, ISettings)
+ renderer = {}
+ factory = DummyFactory(renderer)
+ result = self._callFUT('test_renderers.py', factory)
+ self.failUnless(result is renderer)
+ spec = '%s:%s' % ('repoze.bfg.tests', 'test_renderers.py')
+ self.assertNotEqual(queryUtility(ITemplateRenderer, name=spec),
+ None)
+
+class TestRendererFromPath(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
+ def _callFUT(self, path, level=4):
+ from repoze.bfg.renderers import renderer_from_name
+ return renderer_from_name(path, level)
+
+ def test_it(self):
+ from repoze.bfg.interfaces import ITemplateRendererFactory
+ import os
+ here = os.path.dirname(os.path.abspath(__file__))
+ fixture = os.path.join(here, 'fixtures/minimal.pt')
+ renderer = {}
+ def factory(path, **kw):
+ return renderer
+ testing.registerUtility(factory, ITemplateRendererFactory, name='.pt')
+ result = self._callFUT(fixture)
+ self.assertEqual(result, renderer)
+
+class DummyFactory:
+ def __init__(self, renderer):
+ self.renderer = renderer
+
+ def __call__(self, path, **kw):
+ self.path = path
+ self.kw = kw
+ return self.renderer
+
+