Author: jmorliaguet Date: Thu Mar 23 12:15:18 2006 New Revision: 2704 Modified: cpsskins/branches/jmo-perspectives/ftests/test_appsetup.py cpsskins/branches/jmo-perspectives/setup/README.txt cpsskins/branches/jmo-perspectives/setup/manager.py Log:
- converted to a doctest file test Modified: cpsskins/branches/jmo-perspectives/ftests/test_appsetup.py ============================================================================== --- cpsskins/branches/jmo-perspectives/ftests/test_appsetup.py (original) +++ cpsskins/branches/jmo-perspectives/ftests/test_appsetup.py Thu Mar 23 12:15:18 2006 @@ -19,81 +19,11 @@ import unittest -import cpsskins.configuration -import cpsskins.setup - -from zope.interface import implements, Interface -from zope.app.testing import ztapi -from zope.app.testing.functional import BrowserTestCase -from zope.component import getUtility - -from cpsskins.setup.interfaces import IResourceManager, ISettings -from cpsskins.setup.manager import ResourceManager -from cpsskins.tests.setup import addThemeManager - -def printrepr(obj): - if isinstance(obj, list): - return [repr(r) for r in obj] - return repr(obj) - -class IDummyResource(Interface): - """Dummy resource interface""" - -class DummyResource(object): - """A dummy resource for testing. - """ - implements(IDummyResource) - - def __init__(self, id=u''): - self.id = id - - def __repr__(self): - return '<Dummy resource: %s>' % self.id - -class TestAppSetup(BrowserTestCase): - - def setUp(self): - super(TestAppSetup, self).setUp() - - self.root = self.getRootFolder() - tmutil = addThemeManager(self.root) - - ztapi.provideUtility(IResourceManager, ResourceManager()) - self.resources = getUtility(IResourceManager) - - def test_register_and_lookup_global_resources(self): - resources = self.resources - resource1 = DummyResource(u'resource1') - resource2 = DummyResource(u'resource2') - self.root[u'resource1'] = resource1 - self.root[u'resource2'] = resource2 - # no resource is available yet - self.assertEqual(self.resources.lookup('setting1'), None) - self.assertEqual(self.resources.lookup('setting2'), None) - # register the resource - resources.register(name=u'setting1', title=u'Setting 1', - resource=resource1) - # lookup resources - self.assertEqual(printrepr(resources.lookup('setting1')), - u'<Dummy resource: resource1>') - self.assertEqual(resources.lookup('setting2'), None) - # list resources - self.assertEqual(printrepr(resources.list(type=IDummyResource)), - ['<Dummy resource: resource1>']) - # register new resource - self.resources.register(name=u'setting2', title=u'Setting 2', - resource=resource2) - # lookup resources - self.assertEqual(printrepr(resources.lookup('setting2')), - u'<Dummy resource: resource2>') - # list resources - self.assertEqual(printrepr(resources.list(type=IDummyResource)), - ['<Dummy resource: resource1>', '<Dummy resource: resource2>']) - +from zope.app.testing.functional import FunctionalDocFileSuite def test_suite(): return unittest.TestSuite(( - unittest.makeSuite(TestAppSetup), + FunctionalDocFileSuite('../setup/README.txt'), )) if __name__ == '__main__': Modified: cpsskins/branches/jmo-perspectives/setup/README.txt ============================================================================== --- cpsskins/branches/jmo-perspectives/setup/README.txt (original) +++ cpsskins/branches/jmo-perspectives/setup/README.txt Thu Mar 23 12:15:18 2006 @@ -1,9 +1,90 @@ -========= -RESOURCES -========= +================= +APPLICATION SETUP +================= -Resources are objects that have been given an official role in the -application. +The application is set up by registering resources. Resources can be of +different types: + +- global resources (stored in RAM) + +- local resources (stored in the ZODB) + +global resources can be customized into local resources and they can +be decustomized. + +resources can be loaded from the filesystem. + + +Test setup: + + >>> from zope.app.testing import ztapi + >>> from zope.component import getUtility + >>> from zope.interface import implements, Interface + + >>> from cpsskins.setup.interfaces import IResourceManager, ISettings + >>> from cpsskins.setup.manager import ResourceManager + >>> from cpsskins.tests.setup import addThemeManager + + >>> root = getRootFolder() + >>> tmutil = addThemeManager(root) + + >>> ztapi.provideUtility(IResourceManager, ResourceManager()) + >>> resources = getUtility(IResourceManager) + + >>> class IDummyResource(Interface): + ... """Dummy resource interface""" + + >>> class DummyResource(object): + ... """A dummy resource for testing. + ... """ + ... implements(IDummyResource) + ... def __init__(self, id=u''): + ... self.id = id + ... def __repr__(self): + ... return '<Dummy resource: %s>' % self.id + + + >>> resource1 = DummyResource(u'resource1') + >>> resource2 = DummyResource(u'resource2') + >>> root[u'resource1'] = resource1 + >>> root[u'resource2'] = resource2 + +none of the resources are available yet: + + >>> resources.lookup('setting1') + + >>> resources.lookup('setting2') + +register a resource: + + >>> resources.register(name=u'setting1', title=u'Setting 1', + ... resource=resource1) + +lookup resources: + + >>> resources.lookup('setting1') + <Dummy resource: resource1> + + >>> resources.lookup('setting2') + +list resources: + + >>> resources.list(type=IDummyResource) + [<Dummy resource: resource1>] + +register a new resource: + + >>> resources.register(name=u'setting2', title=u'Setting 2', + ... resource=resource2) + +lookup resources: + + >>> resources.lookup('setting2') + <Dummy resource: resource2> + +list resources: + + >>> resources.list(type=IDummyResource) + [<Dummy resource: resource1>, <Dummy resource: resource2>] -They are usually registered as part of application settings. Modified: cpsskins/branches/jmo-perspectives/setup/manager.py ============================================================================== --- cpsskins/branches/jmo-perspectives/setup/manager.py (original) +++ cpsskins/branches/jmo-perspectives/setup/manager.py Thu Mar 23 12:15:18 2006 @@ -74,15 +74,20 @@ setting = queryUtility(ISetting, name, context=self.context) if setting is None: - raise ValueError("No such setting.") + raise ValueError("No such setting: '%s'." % name) settings = getUtility(ISettings, context=context) regManager = settings.registrationManager for reg in list(regManager.values()): - if reg.provided.isOrExtends(ISetting) and name == reg.name: + if not reg.provided.isOrExtends(IGlobalSetting): + raise ValueError("Attempted to unregister a global setting: " + "'%s'" % name) + if reg.provided.isOrExtends(ILocalSetting) and name == reg.name: reg.status = InactiveStatus del regManager[zapi.name(reg)] del settings[name] + else: + raise ValueError("No such setting: '%s'." % name) def lookup(self, name=u'', context=None, default=None): if not name: @@ -104,7 +109,7 @@ if resource_getter is None: continue resource = resource_getter.getResource() - if not type in list(providedBy(resource)): + if type and not type in list(providedBy(resource)): continue resources.append(resource) return resources -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins