[Zope3-checkins] CVS: Zope3/src/zope/app/component/tests - test_nextservice.py:1.4

Jim Fulton jim@zope.com
Tue, 11 Mar 2003 16:08:41 -0500


Update of /cvs-repository/Zope3/src/zope/app/component/tests
In directory cvs.zope.org:/tmp/cvs-serv1075/src/zope/app/component/tests

Modified Files:
	test_nextservice.py 
Log Message:
Added a check to getNextServiceManager to raise an error if you call
it with a context that isn't "in" an IContainment root.  This check is
to make it easier to spot bugs, especially in tests, that occur when 
you don't create the right context and end up getting a global service
when you expect a local one. 


=== Zope3/src/zope/app/component/tests/test_nextservice.py 1.3 => 1.4 ===
--- Zope3/src/zope/app/component/tests/test_nextservice.py:1.3	Fri Feb 28 09:24:12 2003
+++ Zope3/src/zope/app/component/tests/test_nextservice.py	Tue Mar 11 16:08:40 2003
@@ -16,16 +16,16 @@
 """
 
 from unittest import TestCase, TestSuite, main, makeSuite
-
-from zope.interface import Interface
-
+from zope.app.component.hooks import getServiceManager_hook
+from zope.app.component.nextservice import getNextServiceManager
+from zope.app.interfaces.services.service import IServiceManagerContainer
+from zope.app.traversing import IContainmentRoot
 from zope.component.exceptions import ComponentLookupError
-
+from zope.component.interfaces import IServiceService
+from zope.component.service import serviceManager
+from zope.interface import Interface
 from zope.proxy.context import Wrapper
 
-from zope.app.interfaces.services.service import IServiceManagerContainer
-
-from zope.component.interfaces import IServiceService
 
 class ServiceManager:
     __implements__ =  IServiceService
@@ -44,7 +44,10 @@
     def setServiceManager(self, sm):
         self.sm = sm
 
-root = Folder()
+class Root(Folder):
+    __implements__ =  IServiceManagerContainer, IContainmentRoot
+
+root = Root()
 
 f1 = Wrapper(Folder(), root)
 sm1 = ServiceManager()
@@ -54,22 +57,17 @@
 sm2 = ServiceManager()
 f2.setServiceManager(sm2)
 
+
+
 class Test(TestCase):
 
     def test_getServiceManager(self):
-        from zope.component.service \
-             import serviceManager
-        from zope.app.component.hooks import getServiceManager_hook
 
         self.assertEqual(getServiceManager_hook(root), serviceManager)
         self.assertEqual(getServiceManager_hook(f1), sm1)
         self.assertEqual(getServiceManager_hook(f2), sm2)
 
     def test_getNextServiceManager(self):
-        from zope.component.service \
-             import serviceManager
-        from zope.app.component.nextservice \
-             import getNextServiceManager
 
         self.assertRaises(ComponentLookupError,
                           getNextServiceManager, root)
@@ -78,6 +76,14 @@
                          serviceManager)
         self.assertEqual(getNextServiceManager(Wrapper(sm2, f2)), sm1)
 
+    def test_getNextServiceManager_fails_w_bad_root(self):
+        root = Folder()
+        f1 = Wrapper(Folder(), root)
+        sm1 = ServiceManager()
+        f1.setServiceManager(sm1)
+        self.assertRaises(TypeError,
+                          getNextServiceManager, Wrapper(sm1, f1)
+                          )
 
 def test_suite():
     return makeSuite(Test)