summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-02-04 18:32:36 +0000
committerChris McDonough <chrism@agendaless.com>2010-02-04 18:32:36 +0000
commit89968dce0273f49cf34e07480077f7843593f54e (patch)
treebc7f1f02d0af23c497bbb612e962def3a044d6fc /repoze/bfg/tests
parentd43b02fbe101233ad89eee605d558ca6f60a7e01 (diff)
downloadpyramid-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.py3
-rw-r--r--repoze/bfg/tests/test_integration.py17
-rw-r--r--repoze/bfg/tests/test_view.py30
-rw-r--r--repoze/bfg/tests/viewdecoratorapp/__init__.py1
-rw-r--r--repoze/bfg/tests/viewdecoratorapp/configure.zcml6
-rw-r--r--repoze/bfg/tests/viewdecoratorapp/views/__init__.py1
-rw-r--r--repoze/bfg/tests/viewdecoratorapp/views/templates/foo.pt3
-rw-r--r--repoze/bfg/tests/viewdecoratorapp/views/views.py17
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'}