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

Reply via email to