summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-10-19 20:19:01 +0000
committerChris McDonough <chrism@agendaless.com>2009-10-19 20:19:01 +0000
commite8b295fe5759eb19a9c808c71ed96616d5acaf90 (patch)
treeeb733a79d954657eed710d5650617df0bcb28d41
parentb3e9ee1f5863cbe0d092f29e25cb4363d7398b64 (diff)
downloadpyramid-e8b295fe5759eb19a9c808c71ed96616d5acaf90.tar.gz
pyramid-e8b295fe5759eb19a9c808c71ed96616d5acaf90.tar.bz2
pyramid-e8b295fe5759eb19a9c808c71ed96616d5acaf90.zip
- Add ``repoze.bfg.testing.registerSettings`` API, which is documented
in the "repoze.bfg.testing" API chapter. This allows for registration of "settings" values obtained via ``repoze.bfg.settings.get_settings()`` for use in unit tests.
-rw-r--r--CHANGES.txt5
-rw-r--r--docs/api/testing.rst2
-rw-r--r--repoze/bfg/testing.py29
-rw-r--r--repoze/bfg/tests/test_testing.py15
4 files changed, 51 insertions, 0 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 9f8a850e7..13e9e29ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -7,6 +7,11 @@ Features
- ``paster bfgshell`` now supports IPython if it's available for
import. Thanks to Daniel Holth for the initial patch.
+- Add ``repoze.bfg.testing.registerSettings`` API, which is documented
+ in the "repoze.bfg.testing" API chapter. This allows for
+ registration of "settings" values obtained via
+ ``repoze.bfg.settings.get_settings()`` for use in unit tests.
+
Documentation
-------------
diff --git a/docs/api/testing.rst b/docs/api/testing.rst
index bf3d68589..c18f24195 100644
--- a/docs/api/testing.rst
+++ b/docs/api/testing.rst
@@ -25,6 +25,8 @@
.. autofunction:: registerRoute
+ .. autofunction:: registerSettings
+
.. autofunction:: setUp
.. autofunction:: tearDown
diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py
index 50f19cbf7..0be463f73 100644
--- a/repoze/bfg/testing.py
+++ b/repoze/bfg/testing.py
@@ -238,6 +238,35 @@ def registerRoute(path, name, factory=None):
sm.registerUtility(mapper, IRoutesMapper)
mapper.connect(path, name, factory)
+def registerSettings(dictarg=None, **kw):
+ """ Register one or more 'setting' key/value pairs. A setting is
+ a single key/value pair in the dictionary-ish object returned from
+ the API ``repoze.bfg.settings.get_settings()``.
+
+ You may pass a dictionary::
+
+ registerSettings({'external_uri':'http://example.com'})
+
+ Or a set of key/value pairs::
+
+ registerSettings(external_uri='http://example.com')
+
+ Use of this function is required when you need to test code that
+ calls the ``repoze.bfg.settings.get_settings()`` API and uses
+ return values from it.
+ """
+ from repoze.bfg.interfaces import ISettings
+ from zope.component import queryUtility
+ from repoze.bfg.settings import Settings
+ settings = queryUtility(ISettings)
+ if settings is None:
+ settings = Settings()
+ sm = getSiteManager()
+ sm.registerUtility(settings, ISettings)
+ if dictarg is not None:
+ settings.update(dictarg)
+ settings.update(kw)
+
class DummyRootFactory(object):
__parent__ = None
__name__ = None
diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py
index 9eab891e3..6bb920cba 100644
--- a/repoze/bfg/tests/test_testing.py
+++ b/repoze/bfg/tests/test_testing.py
@@ -277,6 +277,21 @@ class TestTestingFunctions(unittest.TestCase):
self.assertEqual(route_url('home', request, pagename='abc'),
'http://example.com/abc')
+ def test_registerSettings(self):
+ from repoze.bfg.interfaces import ISettings
+ from repoze.bfg.testing import registerSettings
+ from zope.component import getSiteManager
+ registerSettings({'a':1, 'b':2})
+ sm = getSiteManager()
+ settings = sm.getUtility(ISettings)
+ self.assertEqual(settings['a'], 1)
+ self.assertEqual(settings['b'], 2)
+ registerSettings(b=3, c=4)
+ settings = sm.getUtility(ISettings)
+ self.assertEqual(settings['a'], 1)
+ self.assertEqual(settings['b'], 3)
+ self.assertEqual(settings['c'], 4)
+
class TestDummyRootFactory(unittest.TestCase):
def _makeOne(self, environ):
from repoze.bfg.testing import DummyRootFactory