1 | # This Python file uses the following encoding: utf-8 |
---|
2 | """ |
---|
3 | content cache rule implementation tests |
---|
4 | |
---|
5 | $Id: test_content_cache_rule.py 64214 2008-05-03 02:49:17Z newbery $ |
---|
6 | """ |
---|
7 | |
---|
8 | __author__ = 'Héctor Velarde <hvelarde@jornada.com.mx>' |
---|
9 | __docformat__ = 'restructuredtext' |
---|
10 | |
---|
11 | from base import CacheFuTestCase |
---|
12 | |
---|
13 | from AccessControl import Unauthorized |
---|
14 | from Interface.Verify import verifyObject |
---|
15 | from Products.CMFCore.utils import getToolByName |
---|
16 | from Products.CMFPlone.utils import _createObjectByType |
---|
17 | |
---|
18 | from Products.CacheSetup.config import * |
---|
19 | from Products.CacheSetup.interfaces import ICacheRule |
---|
20 | |
---|
21 | class TestContentCacheRule(CacheFuTestCase): |
---|
22 | |
---|
23 | def afterSetUp(self): |
---|
24 | _createObjectByType('ContentCacheRule', self.folder, 'ccr') |
---|
25 | self.ccr = getattr(self.folder, 'ccr') |
---|
26 | |
---|
27 | def _testImplementsBaseCacheRule(self): |
---|
28 | # I need to test this |
---|
29 | iface = IBaseCacheRule |
---|
30 | self.failUnless(iface.isImplementedBy(self.ccr)) |
---|
31 | self.failUnless(verifyObject(iface, self.ccr)) |
---|
32 | |
---|
33 | def testTypeInfo(self): |
---|
34 | ti = self.ccr.getTypeInfo() |
---|
35 | self.failUnlessEqual(ti.Title(), 'Content Cache Rule') |
---|
36 | self.failUnlessEqual(ti.getId(), 'ContentCacheRule') |
---|
37 | self.failUnlessEqual(ti.Metatype(), 'ContentCacheRule') |
---|
38 | self.failUnlessEqual(ti.globalAllow(), 0) |
---|
39 | self.failUnlessEqual(ti.getMethodAliases(), {'(Default)': 'cache_policy_item_config', |
---|
40 | 'view': 'cache_policy_item_config', |
---|
41 | 'edit': 'cache_policy_item_config'}) |
---|
42 | |
---|
43 | def testActions(self): |
---|
44 | # not pretty sure about this |
---|
45 | actions = ('object/view',) |
---|
46 | ttool = getToolByName(self.portal, 'portal_types') |
---|
47 | ccr = ttool['ContentCacheRule'] |
---|
48 | # actions have ManagePortal permission set |
---|
49 | self.assertRaises(Unauthorized, ccr.getActionInfo, actions) |
---|
50 | self.setRoles(['Manager', 'Member']) |
---|
51 | info = ccr.getActionInfo(actions) |
---|
52 | self.failUnless(info is not None) |
---|
53 | self.failUnlessEqual(info['url'], '') |
---|
54 | |
---|
55 | class TestContentCacheRuleMethods(CacheFuTestCase): |
---|
56 | |
---|
57 | def afterSetUp(self): |
---|
58 | _createObjectByType('ContentCacheRule', self.folder, 'ccr') |
---|
59 | self.ccr = getattr(self.folder, 'ccr') |
---|
60 | |
---|
61 | def test_getPurgeExpression(self): |
---|
62 | # check if returns default value |
---|
63 | self.failUnlessEqual(self.ccr.getPurgeExpression(), '') |
---|
64 | |
---|
65 | def test_setPurgeExpression(self): |
---|
66 | self.ccr.setPurgeExpression('python:2+2') |
---|
67 | self.failUnlessEqual(self.ccr.getPurgeExpression(), 'python:2+2') |
---|
68 | self.ccr.setVaryExpression(None) |
---|
69 | self.failUnlessEqual(self.ccr.getVaryExpression(), '') |
---|
70 | |
---|
71 | def _test_validate_purgeExpression(self): |
---|
72 | self.fail('not yet implemented...') |
---|
73 | |
---|
74 | def _test_getPurgeExpressionValue(self): |
---|
75 | self.fail('not yet implemented...') |
---|
76 | |
---|
77 | def _test_getHeaderSet(self): |
---|
78 | self.fail('not yet implemented...') |
---|
79 | |
---|
80 | def _test_getViewsUrlsForObject(self): |
---|
81 | self.fail('not yet implemented...') |
---|
82 | |
---|
83 | def _test_getObjectFieldUrls(self): |
---|
84 | self.fail('not yet implemented...') |
---|
85 | |
---|
86 | def _test_getRelativeUrlsToPurge(self): |
---|
87 | self.fail('not yet implemented...') |
---|
88 | |
---|
89 | # This looks fragile. Seems like it would break with |
---|
90 | # every new Plone version |
---|
91 | def _test_getContentTypesVocabulary(self): |
---|
92 | """ check if returns default content types """ |
---|
93 | types = ( |
---|
94 | ('CMF Document', 'CMF Document'), |
---|
95 | ('CMF Event', 'CMF Event'), |
---|
96 | ('CMF Favorite', 'CMF Favorite'), |
---|
97 | ('CMF File', 'CMF File'), |
---|
98 | ('CMF Folder', 'CMF Folder'), |
---|
99 | ('CMF Image', 'CMF Image'), |
---|
100 | ('CMF Large Plone Folder', 'CMF Large Plone Folder'), |
---|
101 | ('CMF Link', 'CMF Link'), |
---|
102 | ('CMF News Item', 'CMF News Item'), |
---|
103 | ('CMF Topic', 'CMF Topic'), |
---|
104 | ('Discussion Item', 'Discussion Item'), |
---|
105 | ('Event', 'Event'), |
---|
106 | ('Favorite', 'Favorite'), |
---|
107 | ('File', 'File'), |
---|
108 | ('Folder', 'Folder'), |
---|
109 | ('Image', 'Image'), |
---|
110 | ('Large Plone Folder', 'Large Folder (Large Plone Folder)'), |
---|
111 | ('Link', 'Link'), |
---|
112 | ('News Item', 'News Item'), |
---|
113 | ('Document', 'Page (Document)'), |
---|
114 | ('Plone Site', 'Plone Site'), |
---|
115 | ('Topic', 'Smart Folder (Topic)') |
---|
116 | ) |
---|
117 | |
---|
118 | for t in self.ccr.getContentTypesVocabulary().items(): |
---|
119 | self.failUnless(t in types) |
---|
120 | |
---|
121 | def test_suite(): |
---|
122 | from unittest import TestSuite, makeSuite |
---|
123 | suite = TestSuite() |
---|
124 | suite.addTest(makeSuite(TestContentCacheRule)) |
---|
125 | suite.addTest(makeSuite(TestContentCacheRuleMethods)) |
---|
126 | return suite |
---|