[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/ Fixed batching for FolderView and added tests.
Charlie Clark
charlie at begeistert.org
Sun Sep 26 10:45:09 EDT 2010
Log message for revision 116955:
Fixed batching for FolderView and added tests.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
D Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/folder_utest.txt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2010-09-26 12:29:45 UTC (rev 116954)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2010-09-26 14:45:08 UTC (rev 116955)
@@ -64,7 +64,8 @@
@memoize
def _getBatchStart(self):
- return self._getHiddenVars().get('b_start', 0)
+ b_start = self._getHiddenVars().get('b_start', 0)
+ return int(b_start)
@memoize
def _getBatchObj(self):
@@ -77,6 +78,8 @@
data = {}
if hasattr(self, 'hidden_widgets'):
form.getWidgetsData(self.hidden_widgets, self.prefix, data)
+ else:
+ data = self.request.form
return data
@memoize
@@ -100,8 +103,9 @@
pass
else:
new_key = self.expand_prefix(k)
- kw[new_key] = v
- del kw[k]
+ if new_key != k:
+ kw[new_key] = v
+ del kw[k]
query = kw and ('?%s' % urllib.urlencode(kw)) or ''
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2010-09-26 12:29:45 UTC (rev 116954)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2010-09-26 14:45:08 UTC (rev 116955)
@@ -28,13 +28,15 @@
from Products.CMFCore.tests.base.dummy import DummyUserFolder, DummyContent
from Products.CMFCore.interfaces import IPropertiesTool
-from Products.CMFDefault.browser.content.folder import ContentsView
+from Products.CMFDefault.browser.content.folder import (
+ ContentsView, FolderView
+ )
from Products.CMFDefault.browser.content.tests.utils import clearVocabulary
from Products.CMFDefault.browser.content.tests.utils import setupVocabulary
from Products.CMFDefault.testing import FunctionalLayer
-class FolderBrowserViewTests(unittest.TestCase):
+class FolderContentsViewTests(unittest.TestCase):
def setUp(self):
"""Setup a site"""
@@ -124,15 +126,53 @@
)
+class FolderViewTests(unittest.TestCase):
+
+ def setUp(self):
+ """Setup a site"""
+ self.site = site = DummySite('site')
+ folder = PortalFolder('test_folder')
+ self.folder = site._setObject('test_folder', folder)
+
+ def _make_one(self, name="DummyItem"):
+ content = DummyContent(name)
+ content.portal_type = "Dummy Content"
+ self.folder._setObject(name, content)
+
+ def _make_batch(self):
+ """Add enough objects to force pagination"""
+ batch_size = ContentsView._BATCH_SIZE
+ for i in range(batch_size + 2):
+ content_id = "Dummy%s" % i
+ self._make_one(content_id)
+
+ def test_getNavigationURL(self):
+ url = 'http://example.com/view'
+ self._make_batch()
+ view = FolderView(self.folder, TestRequest(ACTUAL_URL=url))
+ self.assertTrue(view._getNavigationURL(25) == url + "?b_start=25")
+
+ def test_folder_has_local(self):
+ self._make_one('local_pt')
+ view = FolderView(self.folder, TestRequest())
+ self.assertTrue(view.has_local())
+
+ def test_folder_not_has_local(self):
+ self._make_one()
+ view = FolderView(self.folder, TestRequest())
+ self.assertFalse(view.has_local())
+
+
ftest_suite = ZopeTestCase.FunctionalDocFileSuite('folder.txt',
setUp=setupVocabulary,
tearDown=clearVocabulary,
)
-
+
ftest_suite.layer = FunctionalLayer
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(FolderBrowserViewTests))
+ suite.addTest(unittest.makeSuite(FolderContentsViewTests))
+ suite.addTest(unittest.makeSuite(FolderViewTests))
suite.addTest(unittest.TestSuite((ftest_suite,)))
return suite
More information about the checkins
mailing list