Author: jmorliaguet Date: Thu Apr 20 23:24:34 2006 New Revision: 2918 Modified: cpsskins/branches/paris-sprint-2006/doc/registration.txt Log:
- test update for the new registry API Modified: cpsskins/branches/paris-sprint-2006/doc/registration.txt ============================================================================== --- cpsskins/branches/paris-sprint-2006/doc/registration.txt (original) +++ cpsskins/branches/paris-sprint-2006/doc/registration.txt Thu Apr 20 23:24:34 2006 @@ -5,12 +5,6 @@ This is meant for testing the new Zope3 registration API - >>> from cpsskins.utils import getThemeManager - >>> from zope.component import getSiteManager - - >>> from cpsskins.thememanager import ThemeManagementFolder - >>> from cpsskins.thememanager import IThemeManagementFolder - Create a site structure: >>> from zope.app.folder import Folder @@ -23,6 +17,7 @@ >>> from zope.app.testing import setup >>> sm = setup.createSiteManager(folder, True) + >>> from zope.component import getSiteManager >>> getSiteManager(folder) is sm True @@ -32,6 +27,19 @@ Create a theme management folder and register it as a local utility in the local site manager + >>> from zope.component.persistentregistry import PersistentComponents + >>> from zope.app.container.btree import BTreeContainer + >>> from zope.interface import Interface, implements + + >>> from cpsskins.thememanager import IThemeManagementFolder + + >>> class ThemeManagementFolder(BTreeContainer, PersistentComponents): + ... implements(IThemeManagementFolder) + ... + ... def __init__(self, **kw): + ... BTreeContainer.__init__(self) + ... PersistentComponents.__init__(self) + >>> tmutil = ThemeManagementFolder() >>> sm.registerUtility(tmutil, IThemeManagementFolder) @@ -40,6 +48,7 @@ The theme management folder is available through getThemeManager(context) + >>> from cpsskins.utils import getThemeManager >>> getThemeManager(folder) is tmutil True @@ -49,3 +58,83 @@ >>> getThemeManager(root) is None True +We add a storage to the theme management folder: + + >>> from cpsskins.storage import Storage + >>> from cpsskins.storage.interfaces import IStorage + + >>> tmutil[u'storage'] = storage = Storage() + >>> tmutil.registerUtility(storage, IStorage) + + >>> tmutil.getUtility(IStorage) is storage + True + + +The theme management folder can be obtained in the context of the storage: + + >>> getThemeManager(storage) is tmutil + True + + +Testing the registration API for global and local utilities: + +Global utilities: + + >>> from zope.component import getGlobalSiteManager + + >>> from cpsskins.setup.interfaces import ISetting + >>> from cpsskins.setup.interfaces import IGlobalSetting + >>> from cpsskins.setup.setting import GlobalSetting + >>> from cpsskins.setup.test.dummy import DummyResource + + >>> root[u'r1'] = r1 = DummyResource() + >>> global_setting = GlobalSetting(resource=r1) + + >>> gsm = getGlobalSiteManager() + >>> gsm.registerUtility(global_setting, ISetting, u's1') + + >>> gsm.queryUtility(ISetting, u's1') is global_setting + True + + >>> gsm.unregisterUtility(provided=ISetting, name=u's1') + True + + >>> gsm.queryUtility(ISetting, u's1') is None + True + + +Local utilities: + + >>> from cpsskins.setup.interfaces import ILocalSetting + >>> from cpsskins.setup.setting import LocalSetting + + >>> root[u'r2'] = r2 = DummyResource() + >>> local_setting = LocalSetting(resource=r2) + + >>> from cpsskins.setup.settings import ISettings + + >>> class Settings(BTreeContainer, PersistentComponents): + ... implements(ISettings) + ... + ... def __init__(self, **kw): + ... BTreeContainer.__init__(self) + ... PersistentComponents.__init__(self) + + >>> settings = Settings() + >>> settings.registerUtility(local_setting, ISetting, u's2') + + >>> settings.queryUtility(ISetting, u's2') is local_setting + True + + >>> settings.unregisterUtility(provided=ISetting, name=u's2') + True + + >>> settings.queryUtility(ISetting, u'r2') is None + True + +Local utilities overriding global utilities: + + >>> gsm.registerUtility(global_setting, ISetting, u's3') + >>> settings.registerUtility(local_setting, ISetting, u's3') + + TODO -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins