summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-06-21 18:14:57 +0000
committerChris McDonough <chrism@agendaless.com>2009-06-21 18:14:57 +0000
commit588c64277429e144a531704833c40ef8c6bd0007 (patch)
treeaaffd79c626a5b0f52ed41663230ff5193d9e820 /repoze
parent158312b1527c3b407879552019fad5c050ff81cc (diff)
downloadpyramid-588c64277429e144a531704833c40ef8c6bd0007.tar.gz
pyramid-588c64277429e144a531704833c40ef8c6bd0007.tar.bz2
pyramid-588c64277429e144a531704833c40ef8c6bd0007.zip
Make views that do not have a route_name match when any route is used.
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/request.py14
-rw-r--r--repoze/bfg/tests/test_request.py82
2 files changed, 82 insertions, 14 deletions
diff --git a/repoze/bfg/request.py b/repoze/bfg/request.py
index e26ed1b5f..8a07c6b75 100644
--- a/repoze/bfg/request.py
+++ b/repoze/bfg/request.py
@@ -54,13 +54,13 @@ def named_request_factories(name=None):
delete_iface = IDELETERequest
head_iface = IHEADRequest
else:
- default_iface = InterfaceClass('%s_IRequest' % name)
- get_iface = InterfaceClass('%s_IGETRequest' % name, (default_iface,))
- post_iface = InterfaceClass('%s_IPOSTRequest' % name, (default_iface,))
- put_iface = InterfaceClass('%s_IPUTRequest' % name, (default_iface,))
- delete_iface = InterfaceClass('%s_IDELETERequest' % name,
- (default_iface,))
- head_iface = InterfaceClass('%s_IHEADRequest' % name, (default_iface))
+ IC = InterfaceClass
+ default_iface = IC('%s_IRequest' % name, (IRequest,))
+ get_iface = IC('%s_IGETRequest' % name, (IGETRequest,))
+ post_iface = IC('%s_IPOSTRequest' % name, (IPOSTRequest,))
+ put_iface = IC('%s_IPUTRequest' % name, (IPUTRequest,))
+ delete_iface = IC('%s_IDELETERequest' % name, (IDELETERequest,))
+ head_iface = IC('%s_IHEADRequest' % name, (IHEADRequest,))
class Request(WebobRequest):
implements(default_iface)
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py
index 557e1db71..6855018b8 100644
--- a/repoze/bfg/tests/test_request.py
+++ b/repoze/bfg/tests/test_request.py
@@ -11,11 +11,7 @@ class TestMakeRequestASCII(unittest.TestCase):
self._callFUT(event)
self.assertEqual(request.charset, None)
-class TestSubclassedRequest(unittest.TestCase):
- def _getTargetClass(self):
- from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
- return DEFAULT_REQUEST_FACTORIES[None]['factory']
-
+class TestRequestSubclass(object):
def _makeOne(self, environ):
request = self._getTargetClass()(environ)
return request
@@ -37,6 +33,75 @@ class TestSubclassedRequest(unittest.TestCase):
request.charset = None
self.assertEqual(request.GET['la'], 'La Pe\xc3\xb1a')
+ def test_class_implements(self):
+ from repoze.bfg.interfaces import IRequest
+ klass = self._getTargetClass()
+ iface = self._getInterface()
+ self.assertTrue(iface.implementedBy(klass))
+ self.assertTrue(IRequest.implementedBy(klass))
+
+ def test_instance_provides(self):
+ from repoze.bfg.interfaces import IRequest
+ inst = self._makeOne({})
+ iface = self._getInterface()
+ self.assertTrue(iface.providedBy(inst))
+ self.assertTrue(IRequest.providedBy(inst))
+
+
+class Test_Request(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES[None]['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES[None]['interface']
+
+class Test_GETRequest(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['GET']['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['GET']['interface']
+
+class Test_POSTRequest(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['POST']['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['POST']['interface']
+
+class Test_PUTRequest(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['PUT']['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['PUT']['interface']
+
+class Test_DELETERequest(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['DELETE']['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['DELETE']['interface']
+
+class Test_HEADRequest(TestRequestSubclass, unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['HEAD']['factory']
+
+ def _getInterface(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES['HEAD']['interface']
+
class TestRequestFactory(unittest.TestCase):
def _callFUT(self, environ):
from repoze.bfg.request import request_factory
@@ -142,14 +207,15 @@ class TestNamedRequestFactories(unittest.TestCase):
self.assertEqual(factories[alias], factories[iface])
named_iface = factories[alias]['interface']
named_factory = factories[alias]['factory']
- self.failUnless(named_iface.implementedBy(named_factory))
self.assertEqual(factories[alias]['interface'], iface)
self.assertEqual(factories[iface]['interface'], iface)
self.assertEqual(factories[alias]['factory'].charset, 'utf-8')
+ self.failUnless(named_iface.implementedBy(named_factory))
+ self.failUnless(iface.implementedBy(named_factory))
+ self.failUnless(IRequest.implementedBy(named_factory))
def test_it_named(self):
factories = self._callFUT('name')
- from zope.interface.interface import InterfaceClass
from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IGETRequest
from repoze.bfg.interfaces import IPOSTRequest
@@ -171,6 +237,8 @@ class TestNamedRequestFactories(unittest.TestCase):
named_iface = factories[alias]['interface']
named_factory = factories[alias]['factory']
self.failUnless(named_iface.implementedBy(named_factory))
+ self.failUnless(iface.implementedBy(named_factory))
+ self.failUnless(IRequest.implementedBy(named_factory))
class TestDefaultRequestFactories(unittest.TestCase):
def test_it(self):