############################################################################## # # Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (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. # ############################################################################## """ Unit tests for SkinsTool module. $Id: test_SkinsTool.py 39938 2005-11-05 21:39:56Z tseaver $ """ from unittest import TestCase, TestSuite, makeSuite, main import Testing try: import Zope2 except ImportError: # BBB: for Zope 2.7 import Zope as Zope2 Zope2.startup() class SkinsContainerTests(TestCase): def test_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_skins \ import SkinsContainer as ISkinsContainer from Products.CMFCore.SkinsContainer import SkinsContainer verifyClass(ISkinsContainer, SkinsContainer) def test_z3interfaces(self): try: from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import ISkinsContainer except ImportError: # BBB: for Zope 2.7 return from Products.CMFCore.SkinsContainer import SkinsContainer verifyClass(ISkinsContainer, SkinsContainer) class SkinsToolTests(TestCase): def _makeOne(self, *args, **kw): from Products.CMFCore.SkinsTool import SkinsTool return SkinsTool(*args, **kw) def test_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_actions \ import ActionProvider as IActionProvider from Products.CMFCore.interfaces.portal_skins \ import portal_skins as ISkinsTool from Products.CMFCore.interfaces.portal_skins \ import SkinsContainer as ISkinsContainer from Products.CMFCore.SkinsTool import SkinsTool verifyClass(IActionProvider, SkinsTool) verifyClass(ISkinsContainer, SkinsTool) verifyClass(ISkinsTool, SkinsTool) def test_z3interfaces(self): try: from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IActionProvider from Products.CMFCore.interfaces import ISkinsContainer from Products.CMFCore.interfaces import ISkinsTool except ImportError: # BBB: for Zope 2.7 return from Products.CMFCore.SkinsTool import SkinsTool verifyClass(IActionProvider, SkinsTool) verifyClass(ISkinsContainer, SkinsTool) verifyClass(ISkinsTool, SkinsTool) def test_add_invalid_path(self): tool = self._makeOne() # We start out with no wkin selections self.assertEquals(len(tool.getSkinSelections()), 0) # Add a skin selection with an invalid path element paths = 'foo, bar, .svn' tool.addSkinSelection('fooskin', paths) # Make sure the skin selection exists paths = tool.getSkinPath('fooskin') self.failIf(paths is None) # Test for the contents self.failIf(paths.find('foo') == -1) self.failIf(paths.find('bar') == -1) self.failUnless(paths.find('.svn') == -1) class SkinnableTests(TestCase): def _makeOne(self): from Products.CMFCore.SkinsTool import SkinsTool from Products.CMFCore.Skinnable import SkinnableObjectManager class TestSkinnableObjectManager(SkinnableObjectManager): tool = SkinsTool() # This is needed otherwise REQUEST is the string # '' REQUEST = None def getSkinsFolderName(self): '''tool''' return 'tool' return TestSkinnableObjectManager() def test_getCurrentSkinName(self): som = self._makeOne() pathA = ('foo, bar') pathB = ('bar, foo') som.tool.addSkinSelection('skinA', pathA) som.tool.addSkinSelection('skinB', pathB) som.tool.manage_properties(default_skin='skinA') # Expect the default skin name to be returned self.failUnless(som.getCurrentSkinName() == 'skinA') # after a changeSkin the new skin name should be returned som.changeSkin('skinB') self.failUnless(som.getCurrentSkinName() == 'skinB') def test_suite(): return TestSuite(( makeSuite(SkinsContainerTests), makeSuite(SkinsToolTests), makeSuite(SkinnableTests), )) if __name__ == '__main__': main(defaultTest='test_suite')