diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-10-19 20:19:01 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-10-19 20:19:01 +0000 |
| commit | e8b295fe5759eb19a9c808c71ed96616d5acaf90 (patch) | |
| tree | eb733a79d954657eed710d5650617df0bcb28d41 | |
| parent | b3e9ee1f5863cbe0d092f29e25cb4363d7398b64 (diff) | |
| download | pyramid-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.txt | 5 | ||||
| -rw-r--r-- | docs/api/testing.rst | 2 | ||||
| -rw-r--r-- | repoze/bfg/testing.py | 29 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_testing.py | 15 |
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 |
