From e8b295fe5759eb19a9c808c71ed96616d5acaf90 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 19 Oct 2009 20:19:01 +0000 Subject: - 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. --- repoze/bfg/testing.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'repoze/bfg/testing.py') 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 -- cgit v1.2.3