diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-16 04:56:49 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-16 04:56:49 +0000 |
| commit | a9fed7675d8da572dee840676714b2653e3f7f79 (patch) | |
| tree | 93327afae95fb9cf6b1d0cb72da265af42a705bd /repoze/bfg/tests/test_renderers.py | |
| parent | a37220b84dee4cc8b1b12f34643ce97dad89ffe1 (diff) | |
| download | pyramid-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.py | 177 |
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 + + |
