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

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

Building directory structure

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