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 |
72 self.assertFalse(schema.has_entity('concerne2')) |
72 self.assertFalse(schema.has_entity('concerne2')) |
73 # have to commit before adding definition relations |
73 # have to commit before adding definition relations |
74 self.commit() |
74 self.commit() |
75 self.assertTrue(schema.has_entity('Societe2')) |
75 self.assertTrue(schema.has_entity('Societe2')) |
76 self.assertTrue(schema.has_relation('concerne2')) |
76 self.assertTrue(schema.has_relation('concerne2')) |
77 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval "noname", ' |
77 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval %(default)s, ' |
78 ' X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
78 ' X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
79 'WHERE RT name "name", E name "Societe2", F name "String"')[0][0] |
79 'WHERE RT name "name", E name "Societe2", F name "String"', |
|
80 {'default': Binary.zpickle('noname')})[0][0] |
80 self._set_attr_perms(attreid) |
81 self._set_attr_perms(attreid) |
81 concerne2_rdef_eid = self.execute( |
82 concerne2_rdef_eid = self.execute( |
82 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
83 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' |
83 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
84 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
84 self._set_perms(concerne2_rdef_eid) |
85 self._set_perms(concerne2_rdef_eid) |
288 'RT name "surname", E name "CWUser"') |
289 'RT name "surname", E name "CWUser"') |
289 self.commit() |
290 self.commit() |
290 |
291 |
291 |
292 |
292 def test_add_attribute_to_base_class(self): |
293 def test_add_attribute_to_base_class(self): |
293 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 ' |
294 attreid = self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval %(default)s, ' |
294 'WHERE RT name "messageid", E name "BaseTransition", F name "String"')[0][0] |
295 'X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' |
|
296 'WHERE RT name "messageid", E name "BaseTransition", F name "String"', |
|
297 {'default': Binary.zpickle('noname')})[0][0] |
295 assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"', |
298 assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"', |
296 {'x': attreid}) |
299 {'x': attreid}) |
297 self.commit() |
300 self.commit() |
298 self.schema.rebuild_infered_relations() |
301 self.schema.rebuild_infered_relations() |
299 self.assertTrue('Transition' in self.schema['messageid'].subjects()) |
302 self.assertTrue('Transition' in self.schema['messageid'].subjects()) |