source: products/qPloneComments/tags/3.0.2/tests/testQPloneCommentsInstall.py

Last change on this file was 1, checked in by myroslav, 18 years ago

Building directory structure

  • Property svn:eol-style set to native
File size: 6.2 KB
Line 
1#
2# Test product's installation/uninstallation
3#
4
5import os, sys, string
6if __name__ == '__main__':
7    execfile(os.path.join(sys.path[0], 'framework.py'))
8
9from Products.PloneTestCase import PloneTestCase
10from Products.CMFCore.utils import getToolByName
11
12PRODUCT = 'qPloneComments'
13
14PRODUCT_SKIN_NAME = "qplonecomments"
15PROPERTY_SHEET = "qPloneComments"
16CONFIGLET_ID = "prefs_comments_setup_form"
17
18EMAIL_PID = "email_discussion_manager"
19APPROVE_NOTIFICATION_PID = "enable_approve_notification"
20PUBLISHED_NOTIFICATION_PID = "enable_published_notification"
21MODERATION_PID = "enable_moderation"
22ANONYMOUS_COMMENTING_PID = "enable_anonymous_commenting"
23
24PERM_NAME = 'Moderate Discussion'
25PloneTestCase.installProduct(PRODUCT)
26PloneTestCase.setupPloneSite()
27
28
29class TestInstallation(PloneTestCase.PloneTestCase):
30
31    def afterSetUp(self):
32        self.loginAsPortalOwner()
33
34        self.qi = self.portal.portal_quickinstaller
35        self.qi.installProduct(PRODUCT)
36
37    def test_configlet_install(self):
38        configTool = getToolByName(self.portal, 'portal_controlpanel', None)
39        self.assert_(CONFIGLET_ID in [a.getId() for a in configTool.listActions()], 'Configlet not found')
40
41    def test_skins_install(self):
42        skinstool=getToolByName(self.portal, 'portal_skins') 
43
44        for skin in skinstool.getSkinSelections():
45            path = skinstool.getSkinPath(skin)
46            path = map( string.strip, string.split( path,',' ) )
47            self.assert_(PRODUCT_SKIN_NAME in path, 'qPloneComments layer not found in %s' % skin)
48
49    def test_layer_install(self):
50        from plone.browserlayer.utils import registered_layers
51        from Products.qPloneComments.interfaces import IPloneCommentsLayer
52        self.failUnless(IPloneCommentsLayer in registered_layers())
53
54    #def test_versionedskin_install(self):
55    #    skinstool=getToolByName(self.portal, 'portal_skins')
56    #    mtool = getToolByName(self.portal, 'portal_migration')
57    #    plone_version = mtool.getFileSystemVersion()
58    #
59    #    for skin in skinstool.getSkinSelections():
60    #        path = skinstool.getSkinPath(skin)
61    #        path = map( string.strip, string.split( path,',' ) )
62    #        self.assert_(PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer not found in %s' %skin)
63
64    def test_propertysheet_install(self):
65        portal_properties = getToolByName(self.portal, 'portal_properties', None)
66
67        self.assert_(PROPERTY_SHEET in portal_properties.objectIds(), 'qPloneComments properies not found in portal_properties')
68
69        property_ids = portal_properties[PROPERTY_SHEET].propertyIds()
70        self.assert_(EMAIL_PID in property_ids, '%s propery not found in %s property' % (EMAIL_PID, PROPERTY_SHEET))
71        self.assert_(APPROVE_NOTIFICATION_PID in property_ids, '%s propery not found in %s property' % (APPROVE_NOTIFICATION_PID, PROPERTY_SHEET))
72        self.assert_(PUBLISHED_NOTIFICATION_PID in property_ids, '%s propery not found in %s property' % (PUBLISHED_NOTIFICATION_PID, PROPERTY_SHEET))
73        self.assert_(MODERATION_PID in property_ids, '%s propery not found in %s property' % (MODERATION_PID, PROPERTY_SHEET))
74        self.assert_(ANONYMOUS_COMMENTING_PID in property_ids, '%s propery not found in %s property' % (ANONYMOUS_COMMENTING_PID, PROPERTY_SHEET))
75
76
77    def test_skins_uninstall(self):
78        self.qi.uninstallProducts([PRODUCT])
79        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed')
80        skinstool=getToolByName(self.portal, 'portal_skins') 
81
82        #self.assert_(not PRODUCT_SKIN_NAME in skinstool.objectIds(), '%s directory view found in portal_skins after uninstallation' % PRODUCT_SKIN_NAME)
83        for skin in skinstool.getSkinSelections():
84            path = skinstool.getSkinPath(skin)
85            path = map( string.strip, string.split( path,',' ) )
86            self.assert_(not PRODUCT_SKIN_NAME in path, '%s layer found in %s after uninstallation' % (PRODUCT_SKIN_NAME, skin))
87
88    def test_layer_uninstall(self):
89        self.qi.uninstallProducts([PRODUCT])
90        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed')
91       
92        from plone.browserlayer.utils import registered_layers
93        from Products.qPloneComments.interfaces import IPloneCommentsLayer
94        self.failIf(IPloneCommentsLayer in registered_layers())
95
96    #def test_versionedskin_uninstall(self):
97    #    self.qi.uninstallProducts([PRODUCT])
98    #    self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qSEOptimizer is already installed')
99    #    skinstool=getToolByName(self.portal, 'portal_skins')
100    #    mtool = getToolByName(self.portal, 'portal_migration')
101    #    plone_version = mtool.getFileSystemVersion()
102    #
103    #    for skin in skinstool.getSkinSelections():
104    #        path = skinstool.getSkinPath(skin)
105    #        path = map( string.strip, string.split( path,',' ) )
106    #        self.assert_(not PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer found in %s after uninstallation' %skin)
107
108    def test_configlet_uninstall(self):
109        self.qi.uninstallProducts([PRODUCT])
110        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed')
111   
112        configTool = getToolByName(self.portal, 'portal_controlpanel', None)
113        self.assert_(not CONFIGLET_ID in [a.getId() for a in configTool.listActions()], 'Configlet found after uninstallation')
114
115    def test_propertysheet_uninstall(self):
116        self.qi.uninstallProducts([PRODUCT])
117        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed')
118       
119        portal_properties = getToolByName(self.portal, 'portal_properties')
120        self.assert_(PROPERTY_SHEET in portal_properties.objectIds(), \
121                     'qPloneComments property_sheet not found in portal_properties after uninstallation')
122   
123    def test_permission_added(self):
124        roles = [item['name'] for item in self.portal.rolesOfPermission(PERM_NAME)]
125        self.assert_( roles != [], '%s not installed'%PERM_NAME)
126       
127
128TESTS = [TestInstallation]
129
130def test_suite():
131    from unittest import TestSuite, makeSuite
132    suite = TestSuite()
133    suite.addTest(makeSuite(TestInstallation))
134    return suite
135
136if __name__ == '__main__':
137    framework()
138
Note: See TracBrowser for help on using the repository browser.