[Checkins] SVN: Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/ Test for validate_items fixed and test for identifying selected objects added.

Charlie Clark charlie at begeistert.org
Tue Jun 9 05:34:46 EDT 2009


Log message for revision 100755:
  Test for validate_items fixed and test for identifying selected objects added.

Changed:
  U   Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py
  U   Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/tests/test_new_folder.py

-=-
Modified: Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py
===================================================================
--- Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py	2009-06-09 09:33:45 UTC (rev 100754)
+++ Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py	2009-06-09 09:34:46 UTC (rev 100755)
@@ -16,7 +16,6 @@
 from zope.formlib import form
 
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-from Products.Five.formlib.formbase import PageForm
 
 from Products.CMFCore.interfaces import IDynamicType
 
@@ -353,7 +352,7 @@
         return fields
                 
     def _get_ids(self, data):
-        """Strip prefixes from ids that have been selected"""
+        """Identify objects that have been selected"""
         ids = [k.split(".")[0] for k, v in data.items() if v == True]
         return ids
     
@@ -387,10 +386,8 @@
     def validate_items(self, action=None, data=None):
         """Check whether any items have been selected for 
         the requested action."""
-        errors = form.getWidgetsData(self.widgets, self.prefix, data)
-        if data is None:
-            data = {}
-        if len(self._get_ids(data)) == 0:
+        super(ContentsView, self).validate(action, data)
+        if data is None or data == {}:
             return [_(u"Please select one or more items first.")]
         else:
             return []

Modified: Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/tests/test_new_folder.py
===================================================================
--- Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/tests/test_new_folder.py	2009-06-09 09:33:45 UTC (rev 100754)
+++ Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/tests/test_new_folder.py	2009-06-09 09:34:46 UTC (rev 100755)
@@ -67,29 +67,47 @@
         view = ContentsView(self.folder, TestRequest())
         self.failIf(view.can_sort_be_changed())
     
-    def test_has_subobjects(self):
+    def test_empty_has_subobjects(self):
         view = ContentsView(self.folder, TestRequest())
         self.failIf(view.has_subobjects())
         
+    def test_has_subobjects(self):
+        self._make_one()
+        view = ContentsView(self.folder, TestRequest())
+        self.failUnless(view.has_subobjects())
+        
     def test_check_clipboard_data(self):
         view = ContentsView(self.folder, TestRequest())
         self.failIf(view.check_clipboard_data())
     
-    # This test is flawed and always fails on empty folders
-    # def test_check_validator(self):
-    #     view = ContentsView(self.folder, TestRequest())
-    #     self.assertEquals(view.validate_items(), 
-    #                 [u'Please select one or more items first.'])
-    #     self.assertEquals(view.validate_items(data={'foo':True}), [])
+    def test_validate_items(self):
+        """Cannot validate forms without widgets"""
+        view = ContentsView(self.folder, TestRequest())
+        self.assertRaises(AttributeError, 
+                            view.validate_items, "", {'foo':'bar'})
+                            
+    def test_get_ids(self):
+        view = ContentsView(self.folder, TestRequest())
+        self.assertEquals(
+                        view._get_ids({'foo':'bar'}),
+                        [])
+        self.assertEquals(
+                        view._get_ids({'DummyItem1.select':True,
+                                       'DummyItem2.select':False,
+                                       'DummyItem3.select':True}),
+                        ['DummyItem1', 'DummyItem3'])
         
+    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
-            content_obj = DummyContent(content_id)
-            content_obj.portal_type = "Dummy Content"
-            obj = self.folder._setObject(content_id, content_obj)
+            self._make_one(content_id)
 
     def site_login(self):
         newSecurityManager(None, 
@@ -127,6 +145,4 @@
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(FolderBrowserViewTests))
-    return suite
-    
-# bin/test -s ~/CMF-Sandbox/cmf-trunk/src/Products.CMFDefault/Products/CMFDefault/browser
\ No newline at end of file
+    return suite
\ No newline at end of file



More information about the Checkins mailing list