[Checkins] SVN: z3c.caching/trunk/ Add back convenience API - both for BBB and because it's easier to work with.

Martin Aspeli optilude at gmx.net
Thu Dec 31 02:16:33 EST 2009


Log message for revision 107430:
  Add back convenience API - both for BBB and because it's easier to work with.

Changed:
  U   z3c.caching/trunk/README.txt
  U   z3c.caching/trunk/src/z3c/caching/registry.py
  U   z3c.caching/trunk/src/z3c/caching/tests/test_registry.py

-=-
Modified: z3c.caching/trunk/README.txt
===================================================================
--- z3c.caching/trunk/README.txt	2009-12-31 07:08:04 UTC (rev 107429)
+++ z3c.caching/trunk/README.txt	2009-12-31 07:16:33 UTC (rev 107430)
@@ -67,11 +67,9 @@
 
 To find the ruleset for an object use the ``lookup`` method::
 
-   from z3c.caching.registry import getGlobalRulesetRegistry
-   registry = getGlobalRulesetRegistry()
+   from z3c.caching.registry import lookup
+   cacheRule = lookup(FrontpageView)
 
-   cacheRule = registry.lookup(FrontpageView)
-
 Caching operations
 ------------------
 

Modified: z3c.caching/trunk/src/z3c/caching/registry.py
===================================================================
--- z3c.caching/trunk/src/z3c/caching/registry.py	2009-12-31 07:08:04 UTC (rev 107429)
+++ z3c.caching/trunk/src/z3c/caching/registry.py	2009-12-31 07:16:33 UTC (rev 107430)
@@ -92,3 +92,25 @@
 
 def getGlobalRulesetRegistry():
     return IRulesetRegistry(getGlobalSiteManager(), None)
+
+# Convenience API
+
+def register(obj, rule):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global not found initialised")
+    return registry.register(obj, rule)
+
+def unregister(obj):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global not found initialised")
+    return registry.unregister(obj)
+
+def lookup(obj):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        return None
+    return registry.lookup(obj)
+
+__all__ = ['getGlobalRulesetRegistry', 'register', 'unregister', 'lookup']
\ No newline at end of file

Modified: z3c.caching/trunk/src/z3c/caching/tests/test_registry.py
===================================================================
--- z3c.caching/trunk/src/z3c/caching/tests/test_registry.py	2009-12-31 07:08:04 UTC (rev 107429)
+++ z3c.caching/trunk/src/z3c/caching/tests/test_registry.py	2009-12-31 07:16:33 UTC (rev 107430)
@@ -111,7 +111,52 @@
     
     def test_enumerate_empty(self):
         self.assertEqual(set([]), set(self.registry.enumerate()))
+
+class TestConvenienceAPI(TestCase):
+
+    def setUp(self):
+        provideAdapter(RulesetRegistry)
+        self.registry = getGlobalRulesetRegistry()
     
+    def tearDown(self):
+        self.registry.clear()
+        zope.component.testing.tearDown()
+
+    def test_no_ruleset_returned_if_unregistered(self):
+        from z3c.caching.registry import lookup
+        self.failUnless(lookup(None) is None)
+
+    def test_ruleset_for_class(self):
+        from z3c.caching.registry import register, lookup
+        register(TestView, "frop")
+        i=TestView()
+        self.assertEqual(lookup(i), "frop")
+
+    def test_ruleset_for_interface(self):
+        from z3c.caching.registry import register, lookup
+        register(ITestView, "frop")
+        i=TestView()
+        self.assertEqual(lookup(i), "frop")
+    
+    def test_most_specific_interface_wins(self):
+        from z3c.caching.registry import register, lookup
+        register(ITestView, "frop")
+        register(IMoreSpecificTestView, "fribble")
+        i=OtherTestView()
+        self.assertEqual(lookup(i), "fribble")
+    
+    def test_unregistering_ruleset_removes_ruleset(self):
+        from z3c.caching.registry import register, unregister, lookup
+        register(TestView, "frop")
+        unregister(TestView)
+        self.failUnless(lookup(TestView) is None)
+
+    def test_unregistering_nonexistant_ruleset_doesnt_error(self):
+        from z3c.caching.registry import unregister, lookup
+        self.failUnless(lookup(TestView) is None)
+        unregister(TestView)
+        self.failUnless(lookup(TestView) is None)
+
 def test_suite():
     import unittest
     return unittest.defaultTestLoader.loadTestsFromName(__name__)



More information about the checkins mailing list