[Modeling-cvs] ProjectModeling/Modeling/tests test_EditingContext_Global.py,1.29,1.30
Status: Abandoned
Brought to you by:
sbigaret
|
From: <sbi...@us...> - 2003-07-18 14:30:49
|
Update of /cvsroot/modeling/ProjectModeling/Modeling/tests
In directory sc8-pr-cvs1:/tmp/cvs-serv21897/tests
Modified Files:
test_EditingContext_Global.py
Log Message:
Fixed bug #772997: deleted then re-insert objects not correctly handled.
Index: test_EditingContext_Global.py
===================================================================
RCS file: /cvsroot/modeling/ProjectModeling/Modeling/tests/test_EditingContext_Global.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** test_EditingContext_Global.py 16 Jul 2003 19:05:37 -0000 1.29
--- test_EditingContext_Global.py 18 Jul 2003 14:30:46 -0000 1.30
***************
*** 990,995 ****
self.assertEqual(fdard.snapshot_raw()['lastName'], fdard_name)
def test_999_customSQLQuery(self):
! "[EditingContext] customSQLQuery"
fs=FetchSpecification(entityName='Writer')
#dbContext=EditingContext().rootObjectStore().objectStoreForFetchSpecification(fs)
--- 990,1064 ----
self.assertEqual(fdard.snapshot_raw()['lastName'], fdard_name)
+ def test_22_cancel_delete(self):
+ "[EditingContext] cancel a delete on an object"
+ ## check: delete / insert
+ ec=EditingContext()
+ rabelais=ec.fetch('Writer', 'lastName == "Rabelais"')[0]
+ ec.deleteObject(rabelais)
+ self.failUnless(rabelais in ec.allDeletedObjects())
+ self.failIf(rabelais in ec.deletedObjects()) # unprocessed
+ ec.insertObject(rabelais) # cancel the deletion
+ self.failIf(len(ec.fetch('Writer', 'lastName == "Rabelais"'))!=1)
+ self.failIf(rabelais in ec.allDeletedObjects())
+ self.failIf(rabelais in ec.allInsertedObjects())
+
+ ## check: delete / processRecentChanges / insert
+ ec=EditingContext()
+ rabelais=ec.fetch('Writer', 'lastName == "Rabelais"')[0]
+ ec.deleteObject(rabelais)
+ self.failUnless(rabelais in ec.allDeletedObjects())
+ ec.processRecentChanges()
+ self.failUnless(rabelais in ec.deletedObjects())
+ ec.insertObject(rabelais) # cancel the deletion
+ self.failIf(rabelais in ec.allDeletedObjects())
+ self.failIf(rabelais in ec.allInsertedObjects())
+
+ ## check: delete / saveChanges / insert
+ ec=EditingContext()
+ new=Writer(); new.setLastName('test_22')
+ ec.insert(new)
+ ec.saveChanges()
+
+ ec=EditingContext()
+ new=ec.fetch('Writer', 'lastName == "test_22"')[0]
+ new_gid=new.globalID()
+ ec.deleteObject(new)
+ self.failUnless(new in ec.allDeletedObjects())
+ self.failIf(new in ec.deletedObjects())
+ ec.saveChanges()
+ ec.insertObject(new) # cancel the deletion? No, insertion of a new object
+ self.failIf(new in ec.allDeletedObjects())
+ self.failUnless(new in ec.allInsertedObjects())
+ self.failIf(new.globalID()==new_gid)
+ self.failIf(not new.globalID().isTemporary())
+
+ ## check: modify / delete / processRecentChanges / insert -> in modify?
+ ec=EditingContext()
+ new=Writer(); new.setLastName('test_22')
+ ec.insert(new)
+ ec.saveChanges()
+
+ ec=EditingContext()
+ new=ec.fetch('Writer', 'lastName == "test_22"')[0]
+ new_gid=new.globalID()
+ new.setLastName('test_22 alternate value')
+ self.failUnless(new in ec.allUpdatedObjects())
+ ec.deleteObject(new)
+ self.failUnless(new in ec.allDeletedObjects())
+ self.failIf(new in ec.deletedObjects())
+ self.failIf(new in ec.allUpdatedObjects())
+ ec.processRecentChanges()
+ self.failUnless(new in ec.deletedObjects())
+ self.failIf(new in ec.allUpdatedObjects())
+ ec.insertObject(new) # cancel the deletion
+ self.failIf(new in ec.allDeletedObjects())
+ self.failUnless(new in ec.allUpdatedObjects())
+ self.failUnless(new.globalID()==new_gid)
+
+
+ ## check: modify / delete / saveChanges / insert
+
def test_999_customSQLQuery(self):
! "[EditingContext] custom SQL Query"
fs=FetchSpecification(entityName='Writer')
#dbContext=EditingContext().rootObjectStore().objectStoreForFetchSpecification(fs)
|