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