source: products/qPloneGoogleMaps/tags/0.1.0/tests/testOverlay.py @ 1591

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

Building directory structure

  • Property svn:eol-style set to native
File size: 7.4 KB
Line 
1
2""" This module contains class that tests Overlay content type """
3
4import os, sys, string
5if __name__ == '__main__':
6    execfile(os.path.join(sys.path[0], 'framework.py'))
7
8from commonTestingStuff import *
9
10class TestOverlay(PloneTestCase.FunctionalTestCase, PloneTestCase.PloneTestCase):
11    """ Test Overlay content type"""
12
13    def afterSetUp(self):
14        """ AfterSetUp features """
15        self.loginAsPortalOwner()
16        self.folder.invokeFactory("Map", "test_map")
17        self.test_map = self.folder.test_map
18        self.test_map.update(location=FIELD_VALUE)
19        self.test_map.invokeFactory("Overlay", id="test_overlay", title="Test Overlay", description="Test Overlay Description")
20        self.test_overlay = self.test_map.test_overlay
21        self.fields = ['title' ,'description' ,'markerssource' ,'markerscolor']
22        self.membership = getToolByName(self.portal, 'portal_membership', None)
23        self.membership.addMember('another_member', user_password , ['Member'], [])
24        maps_login(self, user_name)
25        self.auth = user_name + ':' + user_password
26
27    def testTypeInformation(self):
28        """ Test Overlay factory type information """
29        type_info = getToolByName(self.portal, 'portal_types').getTypeInfo("Overlay")
30        self.assertEqual(type_info.global_allow, False)
31        self.assertEqual(type_info.content_meta_type, "Overlay")
32
33        ## actions
34        actions = [a.id for a in type_info._actions]
35        self.assertEqual(actions, ['view', 'edit', 'metadata', 'references', 'external_edit', 'local_roles'])
36
37    def testOverlayInvoking(self):
38        """ Test Overlay creating """
39        test_overlay = self.test_overlay
40        self.assertEqual(test_overlay.getId(), "test_overlay")
41        self.assertEqual(test_overlay.Title(), "Test Overlay")
42        self.assertEqual(test_overlay.Description(), "Test Overlay Description")
43
44    def testUpdateOverlayForMember(self):
45        """ Test possibility to update Overlay type for member with owner permissions """
46        maps_login(self, 'member')
47        object_id = self.test_map.invokeFactory('Overlay', 'test')
48        object = getattr(self.test_map, object_id)
49        object.update(title='test title')
50        self.failUnless(object.Title() == 'test title', "Member can't update Map with owner permissions.")
51
52    def testAuthenticatedUserAddOverlayContentType(self):
53        """ Test possibility of adding Overlay content type by authenticated user """
54        for user in ['member', 'manager']:
55            maps_login(self, user)
56            folder = self.folder
57            if user == 'manager':
58                folder = self.portal
59            try:
60                testMap = folder.invokeFactory('Map', 'testMap')
61                example_id = folder.testMap.invokeFactory('Overlay', 'test_%s' % user)
62            except Unauthorized: self.fail("%s could not create Overlay type" % user)
63            self.failUnless(example_id in folder.testMap.objectIds(), "%s failed to add Overlay type to portal" % user)
64
65    def testAnonymAddOverlayContentType(self):
66        """Check impossibility of adding Overlay content type by anonymous user """
67        maps_login(self, 'anonym')
68        self.assertRaises(Unauthorized, self.test_map.invokeFactory, 'Overlay', 'test_example')
69
70    def testAllFieldsPresence(self):
71        """ Test for all fields presence in Overlay """
72        missing_fields = [f for f in self.fields if not self.test_overlay.Schema().has_key(f)]
73        self.failIf(missing_fields, "Following object's fields are missed: %s" % str(missing_fields) )
74
75    def testFieldsAccessibilityView(self):
76        """ Test fields accessibility for viewing """
77        result = {'anonym':[], 'another_member':[], 'member':[], 'manager':[]}
78        for user in ['anonym', 'another_member', 'member', 'manager']:
79            maps_login(self, user)
80            for f in self.fields:
81                field = self.test_overlay.getField(f)
82                if not field.checkPermission('view', self.test_overlay):
83                    result[user].append(f)
84            self.failIf(result[user], "%s - can't view fields: %s" % (user, str(result[user])))
85
86    def testFieldsAllowedEditing(self):
87        """ Test fields accessibility for editing owner and manager """
88        result = {'anonym':[], 'another_member':[], 'member':[], 'manager':[]}
89        # Allowed editing
90        for user in ['member', 'manager']:
91            maps_login(self, user)
92            for f in self.fields:
93                field = self.test_overlay.getField(f)
94                if not field.checkPermission('edit', self.test_overlay):
95                    result[user].append(f)
96            self.failIf(result[user], "%s - can't edit fields: %s" % (user, str(result[user])))
97
98    def testFieldsDisallowedEditing(self):
99        """ Test fields accessibility for editing for member (not owner) and anonymous """
100        result = {'anonym':[], 'another_member':[], 'member':[], 'manager':[]}
101        # Disallowed editing
102        for user in ['anonym', 'another_member']:
103            maps_login(self, user)
104            for f in self.fields:
105                field = self.test_overlay.getField(f)
106                if field.checkPermission('edit', self.test_overlay):
107                    result[user].append(f)
108            self.failIf(result[user], "%s - can edit fields: %s" % (user, str(result[user])) )
109
110    def testGetMarkers(self):
111        """ Test getMarkers Overlays' method """
112        maps_login(self, 'member')
113        self.folder.invokeFactory('Folder', 'source_folder')
114        self.folder.source_folder.invokeFactory('Document', 'test_page')
115        IGEOLocated(self.folder.source_folder.test_page).setLocation(FIELD_VALUE[0], FIELD_VALUE[1])
116        self.folder.source_folder.test_page.reindexObject()
117        self.test_overlay.update(markerscolor=OVERLAY_COLOR)
118        self.test_overlay.update(markerssource=self.folder.source_folder)
119        self.failUnless(self.test_overlay.getSource() == self.folder.source_folder,
120                        "getMarkers method return incorrect result")
121        self.failUnless(self.test_overlay.getMarkersColor() == OVERLAY_COLOR,
122                        "getMarkers method return incorrect result")
123        self.failUnless('test_page' == self.test_overlay.getMarkers()[0].getId,
124                        "getMarkers method return incorrect result")
125
126    def testGeneratedJavaScript(self):
127        """ Test generated javascript for overlay_view template """
128        data = {'longlat'          : self.test_overlay.getMarkers(),
129                'color'            : self.test_overlay.getMarkersColor(),
130                'loc'              : self.test_map.geoLocation(),
131                'controls'         : self.test_map.getMapControl(),
132                'typeControls'     : self.test_map.getTypeControl(),
133                'overviewControls' : self.test_map.getOverviewControl(),
134                'maptype'          : self.test_map.getMapType(),
135                'node'             : 'mapView',
136                'events'           : True
137               }
138        path = '%s/maps_markers' % self.test_overlay.absolute_url_path()
139        response = self.publish(path, self.auth, extra=data, request_method="POST")
140        self.failUnless(response.body == OVERLAY_VIEW_JAVASCRIPT,
141                        "Incorrect javascript tag returned by maps_markers script")
142
143def test_suite():
144    from unittest import TestSuite, makeSuite
145    suite = TestSuite()
146    suite.addTest(makeSuite(TestOverlay))
147    return suite
148
149if __name__ == '__main__':
150    framework()
Note: See TracBrowser for help on using the repository browser.