hooks/test/unittest_integrity.py
changeset 9548 be001628edad
parent 9275 ea7fd598ced9
child 9854 4071c52b8fca
equal deleted inserted replaced
9547:43aace16a953 9548:be001628edad
     1 # -*- coding: utf-8 -*-
     1 # -*- coding: utf-8 -*-
     2 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     2 # copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     4 #
     4 #
     5 # This file is part of CubicWeb.
     5 # This file is part of CubicWeb.
     6 #
     6 #
     7 # CubicWeb is free software: you can redistribute it and/or modify it under the
     7 # CubicWeb is free software: you can redistribute it and/or modify it under the
    59                      'WHERE Y is EmailAddress, P is EmailPart')
    59                      'WHERE Y is EmailAddress, P is EmailPart')
    60         self.assertTrue(self.execute('Email X WHERE X sender Y'))
    60         self.assertTrue(self.execute('Email X WHERE X sender Y'))
    61         self.commit()
    61         self.commit()
    62         self.execute('DELETE Email X')
    62         self.execute('DELETE Email X')
    63         rset = self.execute('Any X WHERE X is EmailPart')
    63         rset = self.execute('Any X WHERE X is EmailPart')
    64         self.assertEqual(len(rset), 1)
    64         self.assertEqual(len(rset), 0)
    65         self.commit()
    65         self.commit()
    66         rset = self.execute('Any X WHERE X is EmailPart')
    66         rset = self.execute('Any X WHERE X is EmailPart')
    67         self.assertEqual(len(rset), 0)
    67         self.assertEqual(len(rset), 0)
    68 
    68 
    69     def test_composite_2(self):
    69     def test_composite_2(self):
    91         self.commit()
    91         self.commit()
    92         rset = self.execute('Any X WHERE X is EmailPart')
    92         rset = self.execute('Any X WHERE X is EmailPart')
    93         self.assertEqual(len(rset), 1)
    93         self.assertEqual(len(rset), 1)
    94         self.assertEqual(rset.get_entity(0, 0).reverse_parts[0].messageid, '<2345>')
    94         self.assertEqual(rset.get_entity(0, 0).reverse_parts[0].messageid, '<2345>')
    95 
    95 
       
    96     def test_composite_object_relation_deletion(self):
       
    97         req = self.request()
       
    98         root = req.create_entity('Folder', name=u'root')
       
    99         a = req.create_entity('Folder', name=u'a', parent=root)
       
   100         b = req.create_entity('Folder', name=u'b', parent=a)
       
   101         c = req.create_entity('Folder', name=u'c', parent=root)
       
   102         self.commit()
       
   103         req = self.request()
       
   104         req.execute('DELETE Folder F WHERE F name "a"')
       
   105         req.execute('DELETE F parent R WHERE R name "root"')
       
   106         self.commit()
       
   107         req = self.request()
       
   108         self.assertEqual([['root'], ['c']],
       
   109                          req.execute('Any NF WHERE F is Folder, F name NF').rows)
       
   110         self.assertEqual([],
       
   111                          req.execute('Any NF,NP WHERE F parent P, F name NF, P name NP').rows)
       
   112 
       
   113     def test_composite_subject_relation_deletion(self):
       
   114         req = self.request()
       
   115         root = req.create_entity('Folder', name=u'root')
       
   116         a = req.create_entity('Folder', name=u'a')
       
   117         b = req.create_entity('Folder', name=u'b')
       
   118         c = req.create_entity('Folder', name=u'c')
       
   119         root.cw_set(children=(a, c))
       
   120         a.cw_set(children=b)
       
   121         self.commit()
       
   122         req = self.request()
       
   123         req.execute('DELETE Folder F WHERE F name "a"')
       
   124         req.execute('DELETE R children F WHERE R name "root"')
       
   125         self.commit()
       
   126         req = self.request()
       
   127         self.assertEqual([['root'], ['c']],
       
   128                          req.execute('Any NF WHERE F is Folder, F name NF').rows)
       
   129         self.assertEqual([],
       
   130                          req.execute('Any NF,NP WHERE F parent P, F name NF, P name NP').rows)
       
   131 
    96     def test_unsatisfied_constraints(self):
   132     def test_unsatisfied_constraints(self):
    97         releid = self.execute('SET U in_group G WHERE G name "owners", U login "admin"')[0][0]
   133         releid = self.execute('SET U in_group G WHERE G name "owners", U login "admin"')[0][0]
    98         with self.assertRaises(ValidationError) as cm:
   134         with self.assertRaises(ValidationError) as cm:
    99             self.commit()
   135             self.commit()
   100         self.assertEqual(cm.exception.errors,
   136         self.assertEqual(cm.exception.errors,