[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