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, |