[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Services/ServiceManager/tests - PlacefulSetup.py:1.1.4.1 __init__.py:1.1.4.1 testServiceManager.py:1.1.4.1
Christian Theune
ct@gocept.com
Sat, 25 May 2002 10:03:24 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Services/ServiceManager/tests
In directory cvs.zope.org:/tmp/cvs-serv26313/lib/python/Zope/App/OFS/Services/ServiceManager/tests
Added Files:
Tag: Zope-3x-branch
PlacefulSetup.py __init__.py testServiceManager.py
Log Message:
Merged the ctheune-services_move-branch to Zope-3x-branch
- Moved Zope.App.OFS.ServiceManager into the Zope.App.OFS.Services package
- Moved Zope.App.OFS.RoleService into the Zope.App.OFS.Services package
=== Added File Zope3/lib/python/Zope/App/OFS/Services/ServiceManager/tests/PlacefulSetup.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
Revision information:
$Id: PlacefulSetup.py,v 1.1.4.1 2002/05/25 14:03:23 ctheune Exp $
"""
from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
class PlacefulSetup(PlacelessSetup):
def setUp(self):
PlacelessSetup.setUp(self)
# set up placeful hooks, saving originals for tearDown
from Zope import ComponentArchitecture as CA
self.__old_getServiceManager_hook=CA.getServiceManager_hook
self.__old_getNextServiceManager_hook=CA.getNextServiceManager_hook
from Zope.App.OFS.Services.ServiceManager import hooks
CA.getServiceManager_hook=hooks.getServiceManager_hook
CA.getNextServiceManager_hook=hooks.getNextServiceManager_hook
def buildFolders(self):
# set up a reasonably complex folder structure
#
# ____________ rootFolder ____________
# / \
# folder1 __________________ folder2
# | \ |
# folder1_1 ____ folder1_2 folder2_1
# | \ | |
# folder1_1_1 folder1_1_2 folder1_2_1 folder2_1_1
from Zope.App.OFS.Content.Folder.Folder import Folder
from Zope.App.OFS.Content.Folder.RootFolder import RootFolder
from Zope.Proxy.ContextWrapper import ContextWrapper
# top
self.rootFolder=RootFolder()
# level 1
self.folder1=Folder()
self.rootFolder.setObject("folder1",self.folder1)
self.folder1=ContextWrapper(self.folder1, self.rootFolder,
name="folder1")
self.folder2=Folder()
self.rootFolder.setObject("folder2",self.folder2)
self.folder2=ContextWrapper(self.folder2, self.rootFolder,
name="folder2")
# level 2
self.folder1_1=Folder()
self.folder1.setObject("folder1_1",self.folder1_1)
self.folder1_1=ContextWrapper(self.folder1_1, self.folder1,
name="folder1_1")
self.folder1_2=Folder()
self.folder1.setObject("folder1_2",self.folder1_2)
self.folder1_2=ContextWrapper(self.folder1_2, self.folder1,
name="folder1_2")
self.folder2_1=Folder()
self.folder2.setObject("folder2_1",self.folder2_1)
self.folder2_1=ContextWrapper(self.folder2_1, self.folder2,
name="folder2_1")
# level 3
self.folder1_1_1=Folder()
self.folder1_1.setObject("folder1_1_1",self.folder1_1_1)
self.folder1_1_1=ContextWrapper(self.folder1_1_1, self.folder1_1,
name="folder1_1_1")
self.folder1_1_2=Folder()
self.folder1_1.setObject("folder1_1_2",self.folder1_1_2)
self.folder1_1_2=ContextWrapper(self.folder1_1_2, self.folder1_1,
name="folder1_1_2")
self.folder1_2_1=Folder()
self.folder1_2.setObject("folder1_2_1",self.folder1_2_1)
self.folder1_2_1=ContextWrapper(self.folder1_2_1, self.folder1_2,
name="folder1_2_1")
self.folder2_1_1=Folder()
self.folder2_1.setObject("folder2_1_1",self.folder2_1_1)
self.folder2_1_1=ContextWrapper(self.folder2_1_1, self.folder2_1,
name="folder2_1_1")
def createServiceManager(self, folder=None):
if folder is None: folder=self.rootFolder
from Zope.App.OFS.Services.ServiceManager.ServiceManager import ServiceManager
folder.setServiceManager(ServiceManager())
def tearDown(self):
# clean up folders and placeful service managers and services too?
from Zope import ComponentArchitecture as CA
CA.getServiceManager_hook=self.__old_getServiceManager_hook
CA.getNextServiceManager_hook=self.__old_getNextServiceManager_hook
PlacelessSetup.tearDown(self)
=== Added File Zope3/lib/python/Zope/App/OFS/Services/ServiceManager/tests/__init__.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
=== Added File Zope3/lib/python/Zope/App/OFS/Services/ServiceManager/tests/testServiceManager.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
Revision information:
$Id: testServiceManager.py,v 1.1.4.1 2002/05/25 14:03:23 ctheune Exp $
"""
from unittest import TestCase, TestLoader, TextTestRunner
from Zope.App.OFS.Container.tests.testIContainer import BaseTestIContainer
from Interface import Interface
from Zope.App.OFS.Content.Folder.RootFolder import RootFolder
from Zope.App.OFS.Content.Folder.Folder import Folder
from Zope.Proxy.ContextWrapper import getWrapperContext
from Zope.App.OFS.Services.ServiceManager.ServiceManager import ServiceManager
from Zope.ComponentArchitecture import getService, getServiceManager
from Zope.Exceptions import ZopeError
from PlacefulSetup import PlacefulSetup
class ITestService(Interface): pass
class TestService:
__implements__ = ITestService
class ServiceManagerTests(PlacefulSetup, BaseTestIContainer, TestCase):
def setUp(self):
PlacefulSetup.setUp(self)
self.buildFolders()
def _Test__new(self):
return ServiceManager()
def testAddService(self):
sm = ServiceManager()
self.rootFolder.setServiceManager(sm)
sm=getServiceManager(self.rootFolder)
ts = TestService()
sm.setObject('test_service1', ts)
self.assertEqual(sm.getObject('test_service1'), ts)
def testGetService(self):
sm = ServiceManager()
self.rootFolder.setServiceManager(sm)
sm=getServiceManager(self.rootFolder)
ts = TestService()
sm.setObject('test_service1', ts)
sm.bindService('test_service', 'test_service1')
testOb=getService(self.rootFolder, 'test_service')
self.assertEqual(getWrapperContext
(getWrapperContext(testOb)),self.rootFolder)
self.assertEqual(testOb, ts)
def testUnbindService(self):
sm = ServiceManager()
self.rootFolder.setServiceManager(sm)
sm=getServiceManager(self.rootFolder)
ts = TestService()
root_ts = TestService()
gsm=getServiceManager(None)
gsm.defineService('test_service', ITestService)
gsm.provideService('test_service', root_ts)
sm.setObject('test_service1', ts)
sm.bindService('test_service', 'test_service1')
self.assertEqual(getService(self.rootFolder, 'test_service'), ts)
sm.unbindService('test_service')
self.assertEqual(getService(self.rootFolder, 'test_service'), root_ts)
def testDeleteService(self):
self.rootFolder.setServiceManager(ServiceManager())
sm=getServiceManager(self.rootFolder)
ts = TestService()
sm.setObject('test_service1', ts)
sm.bindService('test_service', 'test_service1')
self.assertEqual(getService(self.rootFolder, 'test_service'), ts)
self.assertRaises(ZopeError, sm.delObject, 'test_service1')
def testContextServiceLookup(self):
self.rootFolder.setServiceManager(ServiceManager())
sm=getServiceManager(self.rootFolder)
ts = TestService()
sm.setObject('test_service1', ts)
sm.bindService('test_service', 'test_service1')
self.assertEqual(getService(self.folder1, 'test_service'), ts)
self.assertEqual(getService(self.folder1_1, 'test_service'), ts)
def testContextServiceLookupWithMultipleServiceManagers(self):
self.rootFolder.setServiceManager(ServiceManager())
sm=getServiceManager(self.rootFolder)
ts = TestService()
sm.setObject('test_service1', ts)
sm.bindService('test_service', 'test_service1')
self.folder1.setServiceManager(ServiceManager())
sm2=getServiceManager(self.folder1)
self.assertEqual(getService(self.folder1, 'test_service'), ts)
def testComponentArchitectureServiceLookup(self):
self.rootFolder.setServiceManager(ServiceManager())
sm=getServiceManager(self.rootFolder)
self.folder1.setServiceManager(ServiceManager())
sm2=getServiceManager(self.folder1)
ts = TestService()
globsm=getServiceManager(None)
globsm.defineService('test_service', ITestService)
globsm.provideService('test_service', ts)
self.assertEqual(getService(self.folder1, 'test_service'), ts)
def test_suite():
loader=TestLoader()
return loader.loadTestsFromTestCase(ServiceManagerTests)
if __name__=='__main__':
TextTestRunner().run(test_suite())