hooks/test/unittest_integrity.py
changeset 9548 be001628edad
parent 9275 ea7fd598ced9
child 9854 4071c52b8fca
--- a/hooks/test/unittest_integrity.py	Fri Jan 24 13:08:53 2014 +0100
+++ b/hooks/test/unittest_integrity.py	Tue Jan 21 18:30:16 2014 +0100
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
 #
 # This file is part of CubicWeb.
@@ -61,7 +61,7 @@
         self.commit()
         self.execute('DELETE Email X')
         rset = self.execute('Any X WHERE X is EmailPart')
-        self.assertEqual(len(rset), 1)
+        self.assertEqual(len(rset), 0)
         self.commit()
         rset = self.execute('Any X WHERE X is EmailPart')
         self.assertEqual(len(rset), 0)
@@ -93,6 +93,42 @@
         self.assertEqual(len(rset), 1)
         self.assertEqual(rset.get_entity(0, 0).reverse_parts[0].messageid, '<2345>')
 
+    def test_composite_object_relation_deletion(self):
+        req = self.request()
+        root = req.create_entity('Folder', name=u'root')
+        a = req.create_entity('Folder', name=u'a', parent=root)
+        b = req.create_entity('Folder', name=u'b', parent=a)
+        c = req.create_entity('Folder', name=u'c', parent=root)
+        self.commit()
+        req = self.request()
+        req.execute('DELETE Folder F WHERE F name "a"')
+        req.execute('DELETE F parent R WHERE R name "root"')
+        self.commit()
+        req = self.request()
+        self.assertEqual([['root'], ['c']],
+                         req.execute('Any NF WHERE F is Folder, F name NF').rows)
+        self.assertEqual([],
+                         req.execute('Any NF,NP WHERE F parent P, F name NF, P name NP').rows)
+
+    def test_composite_subject_relation_deletion(self):
+        req = self.request()
+        root = req.create_entity('Folder', name=u'root')
+        a = req.create_entity('Folder', name=u'a')
+        b = req.create_entity('Folder', name=u'b')
+        c = req.create_entity('Folder', name=u'c')
+        root.cw_set(children=(a, c))
+        a.cw_set(children=b)
+        self.commit()
+        req = self.request()
+        req.execute('DELETE Folder F WHERE F name "a"')
+        req.execute('DELETE R children F WHERE R name "root"')
+        self.commit()
+        req = self.request()
+        self.assertEqual([['root'], ['c']],
+                         req.execute('Any NF WHERE F is Folder, F name NF').rows)
+        self.assertEqual([],
+                         req.execute('Any NF,NP WHERE F parent P, F name NF, P name NP').rows)
+
     def test_unsatisfied_constraints(self):
         releid = self.execute('SET U in_group G WHERE G name "owners", U login "admin"')[0][0]
         with self.assertRaises(ValidationError) as cm: