[Erp5-report] r20338 - /erp5/trunk/products/ERP5Type/tests/testERP5Type.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 8 11:20:56 CEST 2008


Author: romain
Date: Tue Apr  8 11:20:56 2008
New Revision: 20338

URL: http://svn.erp5.org?rev=20338&view=rev
Log:
Check that creating a temp_object do not write data in ZODB.
Currently, when calling newContent with parameter temp_object=1, container last
ID is modified, and it leads to ConflictError (when using Domain for example).

Modified:
    erp5/trunk/products/ERP5Type/tests/testERP5Type.py

Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=20338&r1=20337&r2=20338&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Tue Apr  8 11:20:56 2008
@@ -289,6 +289,32 @@
       self.assertEquals(a.isTempObject(), 1)
       self.logout()
       self.login()
+
+      # Check that temp object creation do not write in the ZODB
+      class WriteError(Exception):
+        pass
+      def _setLastId(self, id):
+        raise WriteError
+      portal.person_module.__class__._setLastId = _setLastId
+      try:
+        try:
+          o = portal.person_module.newContent(portal_type="Person", 
+                                              temp_object=1)
+        except WriteError:
+          raise self.failureException, "Container last ID modified"
+      finally:
+        delattr(portal.person_module.__class__, '_setLastId')
+
+      # Check that creating 2 consecutive temp object automatically increases
+      # their ID
+      o = portal.person_module.newContent(portal_type="Person", 
+                                          temp_object=1)
+      first_id = o.getId()
+      o = portal.person_module.newContent(portal_type="Person", 
+                                          temp_object=1)
+      second_id = o.getId()
+      self.assertNotEquals(first_id, second_id)
+      self.assertEquals(str(int(first_id) + 1), second_id)
 
     def test_04_CategoryAccessors(self, quiet=quiet, run=run_all_test):
       """




More information about the Erp5-report mailing list