17 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
17 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
18 """cubicweb.server.hooks.syncschema unit and functional tests""" |
18 """cubicweb.server.hooks.syncschema unit and functional tests""" |
19 |
19 |
20 from logilab.common.testlib import TestCase, unittest_main |
20 from logilab.common.testlib import TestCase, unittest_main |
21 |
21 |
22 from cubicweb import ValidationError |
22 from cubicweb import ValidationError, Binary |
23 from cubicweb.schema import META_RTYPES |
23 from cubicweb.schema import META_RTYPES |
24 from cubicweb.devtools.testlib import CubicWebTC |
24 from cubicweb.devtools.testlib import CubicWebTC |
25 from cubicweb.server.sqlutils import SQL_PREFIX |
25 from cubicweb.server.sqlutils import SQL_PREFIX |
26 from cubicweb.devtools.repotest import schema_eids_idx, restore_schema_eids_idx |
26 from cubicweb.devtools.repotest import schema_eids_idx, restore_schema_eids_idx |
27 |
27 |
71 self.assertFalse(schema.has_entity('concerne2')) |
71 self.assertFalse(schema.has_entity('concerne2')) |
72 # have to commit before adding definition relations |
72 # have to commit before adding definition relations |
73 self.commit() |
73 self.commit() |
74 self.assertTrue(schema.has_entity('Societe2')) |
74 self.assertTrue(schema.has_entity('Societe2')) |
75 self.assertTrue(schema.has_relation('concerne2')) |
75 self.assertTrue(schema.has_relation('concerne2')) |
76 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval "noname", ' |
76 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval %(default)s, ' |
77 ' X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
77 ' X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
78 'WHERE RT name "name", E name "Societe2", F name "String"')[0][0] |
78 'WHERE RT name "name", E name "Societe2", F name "String"', |
|
79 {'default': Binary.zpickle('noname')})[0][0] |
79 self._set_attr_perms(attreid) |
80 self._set_attr_perms(attreid) |
80 concerne2_rdef_eid = self.execute( |
81 concerne2_rdef_eid = self.execute( |
81 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
82 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
82 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
83 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
83 self._set_perms(concerne2_rdef_eid) |
84 self._set_perms(concerne2_rdef_eid) |
287 'RT name "surname", E name "CWUser"') |
288 'RT name "surname", E name "CWUser"') |
288 self.commit() |
289 self.commit() |
289 |
290 |
290 |
291 |
291 def test_add_attribute_to_base_class(self): |
292 def test_add_attribute_to_base_class(self): |
292 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval "noname", X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
293 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval %(default)s, ' |
293 'WHERE RT name "messageid", E name "BaseTransition", F name "String"')[0][0] |
294 'X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
|
295 'WHERE RT name "messageid", E name "BaseTransition", F name "String"', |
|
296 {'default': Binary.zpickle('noname')})[0][0] |
294 assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"', |
297 assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"', |
295 {'x': attreid}) |
298 {'x': attreid}) |
296 self.commit() |
299 self.commit() |
297 self.schema.rebuild_infered_relations() |
300 self.schema.rebuild_infered_relations() |
298 self.assertTrue('Transition' in self.schema['messageid'].subjects()) |
301 self.assertTrue('Transition' in self.schema['messageid'].subjects()) |