[1] | 1 | |
---|
| 2 | """ This module contains class that tests product's installation procedure """ |
---|
| 3 | |
---|
| 4 | #PRODUCTS=('geolocation', 'qPloneGoogleMaps') |
---|
| 5 | |
---|
| 6 | import os, sys, string |
---|
| 7 | if __name__ == '__main__': |
---|
| 8 | execfile(os.path.join(sys.path[0], 'framework.py')) |
---|
| 9 | |
---|
| 10 | from commonTestingStuff import * |
---|
| 11 | |
---|
| 12 | class TestInstallation(PloneTestCase.PloneTestCase): |
---|
| 13 | """ Class for testing installation procedure """ |
---|
| 14 | |
---|
| 15 | def afterSetUp(self): |
---|
| 16 | """ AfterSetUp features """ |
---|
| 17 | self.properties = getToolByName(self.portal, 'portal_properties') |
---|
| 18 | self.qi = getToolByName(self.portal, 'portal_quickinstaller') |
---|
| 19 | #self.portal.changeSkin('Plone Default') |
---|
| 20 | self.qi.installProduct(PRODUCT) |
---|
| 21 | self._refreshSkinData() |
---|
| 22 | #self.loginAsPortalOwner() |
---|
| 23 | |
---|
| 24 | def testAddingPropertySheet(self): |
---|
| 25 | """ Test adding property sheet to portal_properties tool """ |
---|
| 26 | self.failUnless(hasattr(self.properties.aq_base, PROPERTY_SHEET)) |
---|
| 27 | |
---|
| 28 | def testAddingPropertyField(self): |
---|
| 29 | """ Test adding property field to portal_properties.maps_properties sheet """ |
---|
| 30 | map_sheet = self.properties[PROPERTY_SHEET] |
---|
| 31 | self.failUnless(map_sheet.hasProperty(PROPERTY_FIELD) and map_sheet.getProperty(PROPERTY_FIELD)==MAP_API_KEYS) |
---|
| 32 | |
---|
| 33 | def testRemovingPropertySheet(self): |
---|
| 34 | """ Test removing property sheet from portal_properties tool """ |
---|
| 35 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 36 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False,'qPloneGoogleMaps is installed yet') |
---|
| 37 | self.failIf(hasattr(self.properties.aq_base, PROPERTY_SHEET), |
---|
| 38 | "There should be no %s sheet in portal_properties tool." % PROPERTY_SHEET) |
---|
| 39 | |
---|
| 40 | def testConfigletInstalling(self): |
---|
| 41 | """ Test creating qPloneGoogleMaps configlet """ |
---|
| 42 | configTool = getToolByName(self.portal, 'portal_controlpanel', None) |
---|
| 43 | self.failUnless(PRODUCT in [a.getId() for a in configTool.listActions()], 'Configlet not found') |
---|
| 44 | |
---|
| 45 | def testConfigletUninstall(self): |
---|
| 46 | """ Test removing qPloneGoogleMaps configlet """ |
---|
| 47 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 48 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False, 'qPloneGoogleMaps is installed yet') |
---|
| 49 | configTool = getToolByName(self.portal, 'portal_controlpanel', None) |
---|
| 50 | self.failIf(PRODUCT in [a.getId() for a in configTool.listActions()], 'Configlet found after uninstallation') |
---|
| 51 | |
---|
| 52 | def testAddingCatalogIndex(self): |
---|
| 53 | """ Test adding index to portal_catalog tool """ |
---|
| 54 | portal_catalog = getToolByName(self.portal, 'portal_catalog') |
---|
| 55 | self.failUnless(GEO_INDEX in portal_catalog.indexes(), 'Index not found in portal_catalog') |
---|
| 56 | |
---|
| 57 | def testRemovingCatalogIndex(self): |
---|
| 58 | """ Test removing index from portal_catalog tool """ |
---|
| 59 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 60 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False, 'qPloneGoogleMaps is installed yet') |
---|
| 61 | portal_catalog = getToolByName(self.portal, 'portal_catalog') |
---|
| 62 | self.failIf(GEO_INDEX in portal_catalog.indexes(), 'Index should not be in in portal_catalog') |
---|
| 63 | |
---|
| 64 | def testAddingCatalogColumn(self): |
---|
| 65 | """ Test adding column to portal_catalog tool """ |
---|
| 66 | portal_catalog = getToolByName(self.portal, 'portal_catalog') |
---|
| 67 | self.failUnless(GEO_INDEX in portal_catalog.schema(), 'Column not found in portal_catalog') |
---|
| 68 | |
---|
| 69 | def testRemovingCatalogColumn(self): |
---|
| 70 | """ Test removing column from portal_catalog tool """ |
---|
| 71 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 72 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False, 'qPloneGoogleMaps is installed yet') |
---|
| 73 | portal_catalog = getToolByName(self.portal, 'portal_catalog') |
---|
| 74 | self.failIf(GEO_INDEX in portal_catalog.schema(), 'Column should not be in in portal_catalog') |
---|
| 75 | |
---|
| 76 | def testInstallingContentTypes(self): |
---|
| 77 | """ Test installing content types """ |
---|
| 78 | content_types = getToolByName(self.portal, 'portal_types').listTypeTitles().keys() |
---|
| 79 | for obj in NEW_PORTAL_TYPES: |
---|
| 80 | self.failUnless(obj in content_types, '%s content type not in portal_types tool' % obj) |
---|
| 81 | |
---|
| 82 | def testAddingToPortalFactory(self): |
---|
| 83 | """ Test adding content types to portal_factory tool """ |
---|
| 84 | factory_types = getToolByName(self.portal, 'portal_factory').getFactoryTypes().keys() |
---|
| 85 | for obj in NEW_PORTAL_TYPES: |
---|
| 86 | self.failUnless(obj in factory_types,'%s content type not in factory_types tool' % obj) |
---|
| 87 | |
---|
| 88 | def testAddingFolderishMapView(self): |
---|
| 89 | """ Test adding map view template to folderish content types """ |
---|
| 90 | portal_types = getToolByName(self.portal, 'portal_types', None) |
---|
| 91 | for tp in ['Folder', 'Large Plone Folder', 'Topic']: |
---|
| 92 | views = list(getattr(getattr(portal_types, tp, None), 'view_methods')) |
---|
| 93 | self.failUnless(TOPIC_VIEW in views, '%s should have a %s view template' % (tp, TOPIC_VIEW)) |
---|
| 94 | |
---|
| 95 | def testRemovingFolderishMapView(self): |
---|
| 96 | """ Test removing map view template from folderish content types """ |
---|
| 97 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 98 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False, 'qPloneGoogleMaps is installed yet') |
---|
| 99 | portal_types = getToolByName(self.portal, 'portal_types', None) |
---|
| 100 | for tp in ['Folder', 'Large Plone Folder', 'Topic']: |
---|
| 101 | views = list(getattr(getattr(portal_types, tp, None), 'view_methods')) |
---|
| 102 | self.failIf(TOPIC_VIEW in views, '%s should not have a %s view template' % (tp, TOPIC_VIEW)) |
---|
| 103 | |
---|
| 104 | def testAddingPortlets(self): |
---|
| 105 | """ Test adding portlets to right slot """ |
---|
| 106 | right_slots = getattr(self.portal, 'right_slots', None) |
---|
| 107 | for slot in MAP_PORTLETS: |
---|
| 108 | self.failUnless(slot in right_slots, '%s not found in right slot' % slot) |
---|
| 109 | |
---|
| 110 | def testRemovingPortlets(self): |
---|
| 111 | """ Test removing portlets from right slot """ |
---|
| 112 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 113 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False, 'qPloneGoogleMaps is installed yet') |
---|
| 114 | right_slots = getattr(self.portal, 'right_slots', None) |
---|
| 115 | for slot in MAP_PORTLETS: |
---|
| 116 | self.failIf(slot in right_slots, '%s should not be in right slot' % slot) |
---|
| 117 | |
---|
| 118 | def testLayerInstalling(self): |
---|
| 119 | """ Test skins layer installation """ |
---|
| 120 | skinstool=getToolByName(self.portal, 'portal_skins') |
---|
| 121 | for skin in skinstool.getSkinSelections(): |
---|
| 122 | path = skinstool.getSkinPath(skin) |
---|
| 123 | path = map(string.strip, string.split(path, ',')) |
---|
| 124 | self.failUnless(PRODUCT in path, 'qPloneGoogleMaps layer not found in %s' % skin) |
---|
| 125 | |
---|
| 126 | def testLayerRemoving(self): |
---|
| 127 | """ Test skins layer uninstallation """ |
---|
| 128 | self.qi.uninstallProducts([PRODUCT,]) |
---|
| 129 | self.assertEqual(self.qi.isProductInstalled(PRODUCT), False,'qPloneGoogleMaps is installed yet') |
---|
| 130 | skinstool=getToolByName(self.portal, 'portal_skins') |
---|
| 131 | for skin in skinstool.getSkinSelections(): |
---|
| 132 | path = skinstool.getSkinPath(skin) |
---|
| 133 | path = map(string.strip, string.split(path, ',')) |
---|
| 134 | self.failIf(PRODUCT in path, 'qPloneGoogleMaps layer found in %s after uninstallation' % skin) |
---|
| 135 | |
---|
| 136 | #tests.append(TestInstallation) |
---|
| 137 | |
---|
| 138 | def test_suite(): |
---|
| 139 | from unittest import TestSuite, makeSuite |
---|
| 140 | suite = TestSuite() |
---|
| 141 | suite.addTest(makeSuite(TestInstallation)) |
---|
| 142 | return suite |
---|
| 143 | |
---|
| 144 | if __name__ == '__main__': |
---|
| 145 | framework() |
---|