| 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() |
|---|