diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-02-04 18:32:36 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-02-04 18:32:36 +0000 |
| commit | 89968dce0273f49cf34e07480077f7843593f54e (patch) | |
| tree | bc7f1f02d0af23c497bbb612e962def3a044d6fc /repoze/bfg/tests | |
| parent | d43b02fbe101233ad89eee605d558ca6f60a7e01 (diff) | |
| download | pyramid-89968dce0273f49cf34e07480077f7843593f54e.tar.gz pyramid-89968dce0273f49cf34e07480077f7843593f54e.tar.bz2 pyramid-89968dce0273f49cf34e07480077f7843593f54e.zip | |
- Fix a bug whereby a ``renderer`` argument to the ``@bfg_view``
decorator that provided a package-relative template filename might
not have been resolved properly. Symptom: inappropriate ``Missing
template resource`` errors.
Diffstat (limited to 'repoze/bfg/tests')
| -rw-r--r-- | repoze/bfg/tests/restbugapp/views.py | 3 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_integration.py | 17 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 30 | ||||
| -rw-r--r-- | repoze/bfg/tests/viewdecoratorapp/__init__.py | 1 | ||||
| -rw-r--r-- | repoze/bfg/tests/viewdecoratorapp/configure.zcml | 6 | ||||
| -rw-r--r-- | repoze/bfg/tests/viewdecoratorapp/views/__init__.py | 1 | ||||
| -rw-r--r-- | repoze/bfg/tests/viewdecoratorapp/views/templates/foo.pt | 3 | ||||
| -rw-r--r-- | repoze/bfg/tests/viewdecoratorapp/views/views.py | 17 |
8 files changed, 75 insertions, 3 deletions
diff --git a/repoze/bfg/tests/restbugapp/views.py b/repoze/bfg/tests/restbugapp/views.py index eb6a6591d..b94851099 100644 --- a/repoze/bfg/tests/restbugapp/views.py +++ b/repoze/bfg/tests/restbugapp/views.py @@ -13,6 +13,3 @@ class PetRESTView(BaseRESTView): def GET(self): return Response('gotten') - def POST(self): - return Response('posted') - diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py index 35d113c5f..41144f7c3 100644 --- a/repoze/bfg/tests/test_integration.py +++ b/repoze/bfg/tests/test_integration.py @@ -151,6 +151,23 @@ class TestRestBugApp(TwillBase): self.assertEqual(browser.get_code(), 200) self.assertEqual(browser.get_html(), 'gotten') +class TestViewDecoratorApp(TwillBase): + config = 'repoze.bfg.tests.viewdecoratorapp:configure.zcml' + def test_it(self): + import twill.commands + browser = twill.commands.get_browser() + browser.go('http://localhost:6543/first') + self.assertEqual(browser.get_code(), 200) + self.failUnless('OK' in browser.get_html()) + + browser.go('http://localhost:6543/second') + self.assertEqual(browser.get_code(), 200) + self.failUnless('OK2' in browser.get_html()) + + browser.go('http://localhost:6543/third') + self.assertEqual(browser.get_code(), 200) + self.failUnless('OK3' in browser.get_html()) + class DummyContext(object): pass diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py index 994eb8c66..68184b5ac 100644 --- a/repoze/bfg/tests/test_view.py +++ b/repoze/bfg/tests/test_view.py @@ -367,6 +367,36 @@ class TestBFGViewDecorator(unittest.TestCase): settings = decorated.__bfg_view_settings__ self.assertEqual(settings[0]['custom_predicates'], (1,)) + def test_call_with_renderer_nodot(self): + decorator = self._makeOne(renderer='json') + def foo(): + """ docstring """ + wrapped = decorator(foo) + self.failUnless(wrapped is foo) + settings = wrapped.__bfg_view_settings__[0] + self.assertEqual(settings['renderer'], 'json') + + def test_call_with_renderer_relpath(self): + decorator = self._makeOne(renderer='fixtures/minimal.pt') + def foo(): + """ docstring """ + wrapped = decorator(foo) + self.failUnless(wrapped is foo) + settings = wrapped.__bfg_view_settings__[0] + self.assertEqual(settings['renderer'], + 'repoze.bfg.tests.test_view:fixtures/minimal.pt') + + def test_call_with_renderer_pkgpath(self): + decorator = self._makeOne( + renderer='repoze.bfg.tests.test_view:fixtures/minimal.pt') + def foo(): + """ docstring """ + wrapped = decorator(foo) + self.failUnless(wrapped is foo) + settings = wrapped.__bfg_view_settings__[0] + self.assertEqual(settings['renderer'], + 'repoze.bfg.tests.test_view:fixtures/minimal.pt') + class TestDefaultForbiddenView(BaseTest, unittest.TestCase): def _callFUT(self, context, request): from repoze.bfg.view import default_forbidden_view diff --git a/repoze/bfg/tests/viewdecoratorapp/__init__.py b/repoze/bfg/tests/viewdecoratorapp/__init__.py new file mode 100644 index 000000000..5bb534f79 --- /dev/null +++ b/repoze/bfg/tests/viewdecoratorapp/__init__.py @@ -0,0 +1 @@ +# package diff --git a/repoze/bfg/tests/viewdecoratorapp/configure.zcml b/repoze/bfg/tests/viewdecoratorapp/configure.zcml new file mode 100644 index 000000000..6867046df --- /dev/null +++ b/repoze/bfg/tests/viewdecoratorapp/configure.zcml @@ -0,0 +1,6 @@ +<configure xmlns="http://namespaces.repoze.org/bfg"> + + <include package="repoze.bfg.includes" /> + <scan package="."/> + +</configure> diff --git a/repoze/bfg/tests/viewdecoratorapp/views/__init__.py b/repoze/bfg/tests/viewdecoratorapp/views/__init__.py new file mode 100644 index 000000000..5bb534f79 --- /dev/null +++ b/repoze/bfg/tests/viewdecoratorapp/views/__init__.py @@ -0,0 +1 @@ +# package diff --git a/repoze/bfg/tests/viewdecoratorapp/views/templates/foo.pt b/repoze/bfg/tests/viewdecoratorapp/views/templates/foo.pt new file mode 100644 index 000000000..6a2f701b6 --- /dev/null +++ b/repoze/bfg/tests/viewdecoratorapp/views/templates/foo.pt @@ -0,0 +1,3 @@ +<html> +${result} +</html> diff --git a/repoze/bfg/tests/viewdecoratorapp/views/views.py b/repoze/bfg/tests/viewdecoratorapp/views/views.py new file mode 100644 index 000000000..29f8c7fd4 --- /dev/null +++ b/repoze/bfg/tests/viewdecoratorapp/views/views.py @@ -0,0 +1,17 @@ +import os +from repoze.bfg.view import bfg_view + +@bfg_view(renderer='templates/foo.pt', name='first') +def first(request): + return {'result':'OK1'} + +@bfg_view(renderer='repoze.bfg.tests.viewdecoratorapp.views:templates/foo.pt', + name='second') +def second(request): + return {'result':'OK2'} + +here = os.path.normpath(os.path.dirname(os.path.abspath(__file__))) +foo = os.path.join(here, 'templates', 'foo.pt') +@bfg_view(renderer=foo, name='third') +def third(request): + return {'result':'OK3'} |
