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