diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-06-21 18:14:57 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-06-21 18:14:57 +0000 |
| commit | 588c64277429e144a531704833c40ef8c6bd0007 (patch) | |
| tree | aaffd79c626a5b0f52ed41663230ff5193d9e820 /repoze | |
| parent | 158312b1527c3b407879552019fad5c050ff81cc (diff) | |
| download | pyramid-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.py | 14 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_request.py | 82 |
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): |
