summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-07-24 07:04:49 +0000
committerChris McDonough <chrism@agendaless.com>2010-07-24 07:04:49 +0000
commit81a833da2adff04d11b9228406bbc1528be65c64 (patch)
tree736765ad3018e4b9e432b4af4bb923fdbdcc898f /repoze/bfg/tests
parent8e18ea4a560b4456ace86bdef6060304de053238 (diff)
downloadpyramid-81a833da2adff04d11b9228406bbc1528be65c64.tar.gz
pyramid-81a833da2adff04d11b9228406bbc1528be65c64.tar.bz2
pyramid-81a833da2adff04d11b9228406bbc1528be65c64.zip
- A new method of the ``Configurator`` exists:
``set_request_factory``. If used, this method will set the factory used by the :mod:`repoze.bfg` router to create all request objects. - The ``Configurator`` constructor takes an additional argument: ``request_factory``. If used, this argument will set the factory used by the :mod:`repoze.bfg` router to create all request objects. - The ``Hooks`` narrative chapter now contains a section about changing the request factory.
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_configuration.py15
-rw-r--r--repoze/bfg/tests/test_paster.py6
-rw-r--r--repoze/bfg/tests/test_router.py8
-rw-r--r--repoze/bfg/tests/test_scripting.py23
-rw-r--r--repoze/bfg/tests/test_traversal.py14
5 files changed, 64 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index d5b212303..02fbc7a06 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -281,6 +281,15 @@ class ConfiguratorTests(unittest.TestCase):
utility = reg.getUtility(ILocaleNegotiator)
self.assertEqual(utility, 'abc')
+ def test_setup_registry_request_factory(self):
+ from repoze.bfg.registry import Registry
+ from repoze.bfg.interfaces import IRequestFactory
+ reg = Registry()
+ config = self._makeOne(reg)
+ config.setup_registry(request_factory='abc')
+ utility = reg.getUtility(IRequestFactory)
+ self.assertEqual(utility, 'abc')
+
def test_setup_registry_alternate_renderers(self):
from repoze.bfg.registry import Registry
from repoze.bfg.interfaces import IRendererFactory
@@ -1896,6 +1905,12 @@ class ConfiguratorTests(unittest.TestCase):
self.assertEqual(config.registry.getUtility(ILocaleNegotiator),
negotiator)
+ def test_set_request_factory(self):
+ from repoze.bfg.interfaces import IRequestFactory
+ config = self._makeOne()
+ config.set_request_factory('abc')
+ self.assertEqual(config.registry.getUtility(IRequestFactory), 'abc')
+
def test_add_translation_dirs_missing_dir(self):
from repoze.bfg.exceptions import ConfigurationError
config = self._makeOne()
diff --git a/repoze/bfg/tests/test_paster.py b/repoze/bfg/tests/test_paster.py
index 147e9854d..43837b5f0 100644
--- a/repoze/bfg/tests/test_paster.py
+++ b/repoze/bfg/tests/test_paster.py
@@ -144,7 +144,11 @@ class DummyIPShell(object):
dummy_root = Dummy()
-dummy_registry = Dummy()
+class DummyRegistry(object):
+ def queryUtility(self, iface, default=None):
+ return default
+
+dummy_registry = DummyRegistry()
class DummyInteractor:
def __call__(self, banner, local):
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 8702b9317..6e25b0584 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -118,6 +118,14 @@ class TestRouter(unittest.TestCase):
router = self._makeOne()
self.assertEqual(router.root_policy, rootfactory)
+ def test_request_factory(self):
+ from repoze.bfg.interfaces import IRequestFactory
+ class DummyRequestFactory(object):
+ pass
+ self.registry.registerUtility(DummyRequestFactory, IRequestFactory)
+ router = self._makeOne()
+ self.assertEqual(router.request_factory, DummyRequestFactory)
+
def test_call_traverser_default(self):
from repoze.bfg.exceptions import NotFound
environ = self._makeEnviron()
diff --git a/repoze/bfg/tests/test_scripting.py b/repoze/bfg/tests/test_scripting.py
index 4d45a6456..2663c4a0f 100644
--- a/repoze/bfg/tests/test_scripting.py
+++ b/repoze/bfg/tests/test_scripting.py
@@ -28,12 +28,33 @@ class TestGetRoot(unittest.TestCase):
closer()
self.assertEqual(len(app.threadlocal_manager.popped), 1)
+ def test_it_requestfactory_overridden(self):
+ app = DummyApp()
+ request = Dummy()
+ class DummyFactory(object):
+ @classmethod
+ def blank(cls, path):
+ return request
+ registry = DummyRegistry(DummyFactory)
+ app.registry = registry
+ root, closer = self._callFUT(app)
+ self.assertEqual(len(app.threadlocal_manager.pushed), 1)
+ pushed = app.threadlocal_manager.pushed[0]
+ self.assertEqual(pushed['request'], request)
class Dummy:
pass
dummy_root = Dummy()
-dummy_registry = Dummy()
+
+class DummyRegistry(object):
+ def __init__(self, result=None):
+ self.result = result
+
+ def queryUtility(self, iface, default=None):
+ return self.result or default
+
+dummy_registry = DummyRegistry()
class DummyApp:
def __init__(self):
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index 29f11dd40..a9727902e 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -938,6 +938,20 @@ class TraverseTests(unittest.TestCase):
self.assertEqual(result['view_name'], '')
self.assertEqual(result['context'], model)
+ def test_requestfactory_overridden(self):
+ from repoze.bfg.interfaces import IRequestFactory
+ from repoze.bfg.request import Request
+ from repoze.bfg.threadlocal import get_current_registry
+ reg = get_current_registry()
+ class MyRequest(Request):
+ pass
+ reg.registerUtility(MyRequest, IRequestFactory)
+ model = DummyContext()
+ traverser = make_traverser({'context':model, 'view_name':''})
+ self._registerTraverser(traverser)
+ self._callFUT(model, [''])
+ self.assertEqual(model.request.__class__, MyRequest)
+
class TestDefaultRootFactory(unittest.TestCase):
def _getTargetClass(self):
from repoze.bfg.traversal import DefaultRootFactory