307 migrschema['Personne'].description = 'blabla bla' |
307 migrschema['Personne'].description = 'blabla bla' |
308 migrschema['titre'].description = 'usually a title' |
308 migrschema['titre'].description = 'usually a title' |
309 migrschema['titre'].rdefs[('Personne', 'String')].description = 'title for this person' |
309 migrschema['titre'].rdefs[('Personne', 'String')].description = 'title for this person' |
310 delete_concerne_rqlexpr = self._rrqlexpr_rset('delete', 'concerne') |
310 delete_concerne_rqlexpr = self._rrqlexpr_rset('delete', 'concerne') |
311 add_concerne_rqlexpr = self._rrqlexpr_rset('add', 'concerne') |
311 add_concerne_rqlexpr = self._rrqlexpr_rset('add', 'concerne') |
|
312 |
312 self.mh.cmd_sync_schema_props_perms(commit=False) |
313 self.mh.cmd_sync_schema_props_perms(commit=False) |
313 |
314 |
314 self.assertEquals(cursor.execute('Any D WHERE X name "Personne", X description D')[0][0], |
315 self.assertEquals(cursor.execute('Any D WHERE X name "Personne", X description D')[0][0], |
315 'blabla bla') |
316 'blabla bla') |
316 self.assertEquals(cursor.execute('Any D WHERE X name "titre", X description D')[0][0], |
317 self.assertEquals(cursor.execute('Any D WHERE X name "titre", X description D')[0][0], |
378 'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0], |
379 'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0], |
379 7+1) |
380 7+1) |
380 # finally |
381 # finally |
381 self.assertEquals(cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0], |
382 self.assertEquals(cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0], |
382 nbrqlexpr_start + 1 + 2 + 2) |
383 nbrqlexpr_start + 1 + 2 + 2) |
383 |
384 self.mh.commit() |
384 self.mh.rollback() |
385 # unique_together test |
|
386 self.assertEqual(len(self.schema.eschema('Personne')._unique_together), 1) |
|
387 self.assertUnorderedIterableEquals(self.schema.eschema('Personne')._unique_together[0], |
|
388 ('nom', 'prenom', 'datenaiss')) |
|
389 rset = cursor.execute('Any C WHERE C is CWUniqueTogetherConstraint') |
|
390 self.assertEquals(len(rset), 1) |
|
391 relations = [r.rtype.name for r in rset.get_entity(0,0).relations] |
|
392 self.assertUnorderedIterableEquals(relations, ('nom', 'prenom', 'datenaiss')) |
385 |
393 |
386 def _erqlexpr_rset(self, action, ertype): |
394 def _erqlexpr_rset(self, action, ertype): |
387 rql = 'RQLExpression X WHERE ET is CWEType, ET %s_permission X, ET name %%(name)s' % action |
395 rql = 'RQLExpression X WHERE ET is CWEType, ET %s_permission X, ET name %%(name)s' % action |
388 return self.mh.session.execute(rql, {'name': ertype}) |
396 return self.mh.session.execute(rql, {'name': ertype}) |
389 def _erqlexpr_entity(self, action, ertype): |
397 def _erqlexpr_entity(self, action, ertype): |