[Erp5-report] r39305 yo - /erp5/trunk/products/Formulator/tests/testSerializeForm.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Oct 19 07:03:06 CEST 2010


Author: yo
Date: Tue Oct 19 07:03:05 2010
New Revision: 39305

URL: http://svn.erp5.org?rev=39305&view=rev
Log:
Work around random behaviors for non-significant values by validators.

Modified:
    erp5/trunk/products/Formulator/tests/testSerializeForm.py

Modified: erp5/trunk/products/Formulator/tests/testSerializeForm.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/tests/testSerializeForm.py?rev=39305&r1=39304&r2=39305&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/tests/testSerializeForm.py [utf8] (original)
+++ erp5/trunk/products/Formulator/tests/testSerializeForm.py [utf8] Tue Oct 19 07:03:05 2010
@@ -354,8 +354,28 @@ class SerializeTestCase(unittest.TestCas
         for field in form.get_fields():
             self.assert_(form2.has_field(field.getId()))
             field2 = getattr(form2, field.getId())
-            # XXX test if values are the same
-            self.assertEquals(field.values, field2.values)
+
+            # XXX In Formulator, None and '' are treated as nearly
+            # being identical, and validators often turn '' to None.
+            # So there may be false positive, if we compare the values
+            # naively.
+            message = 'the values of %r and %r are different: %r != %r' \
+                    % (field, field2, field.values, field2.values)
+            self.assertEquals(sorted(field.values.iterkeys()),
+                    sorted(field2.values.keys()),
+                    message)
+
+            def compare(a, b):
+                if a is None:
+                    a = ''
+                if b is None:
+                    b = ''
+                return a == b
+
+            for key in field.values.keys():
+                self.assertTrue(compare(field.values[key], field2.values[key]),
+                        message)
+
             # test if default renderings are the same
             self.assertEquals(field.render(REQUEST=request),
                               field2.render(REQUEST=request))




More information about the Erp5-report mailing list