server/test/unittest_migractions.py
changeset 9395 96dba2efd16d
parent 9299 c5eed908117d
child 9402 2c48c091b6a2
child 9588 fe267b7336f3
equal deleted inserted replaced
9394:4b89ca0b11ad 9395:96dba2efd16d
   414                           'PE require_permission P, P name "add_note", P require_group G')
   414                           'PE require_permission P, P name "add_note", P require_group G')
   415         self.assertEqual([et.name for et in eexpr.reverse_add_permission], ['Note'])
   415         self.assertEqual([et.name for et in eexpr.reverse_add_permission], ['Note'])
   416         self.assertEqual(eexpr.reverse_read_permission, ())
   416         self.assertEqual(eexpr.reverse_read_permission, ())
   417         self.assertEqual(eexpr.reverse_delete_permission, ())
   417         self.assertEqual(eexpr.reverse_delete_permission, ())
   418         self.assertEqual(eexpr.reverse_update_permission, ())
   418         self.assertEqual(eexpr.reverse_update_permission, ())
   419         # no more rqlexpr to delete and add para attribute
   419         self.assertTrue(self._rrqlexpr_rset('add', 'para'))
   420         self.assertFalse(self._rrqlexpr_rset('add', 'para'))
   420         # no rqlexpr to delete para attribute
   421         self.assertFalse(self._rrqlexpr_rset('delete', 'para'))
   421         self.assertFalse(self._rrqlexpr_rset('delete', 'para'))
   422         # new rql expr to add ecrit_par relation
   422         # new rql expr to add ecrit_par relation
   423         rexpr = self._rrqlexpr_entity('add', 'ecrit_par')
   423         rexpr = self._rrqlexpr_entity('add', 'ecrit_par')
   424         self.assertEqual(rexpr.expression,
   424         self.assertEqual(rexpr.expression,
   425                           'O require_permission P, P name "add_note", '
   425                           'O require_permission P, P name "add_note", '
   443         self.assertEqual(len(self._erqlexpr_rset('add', 'Affaire')), 1)
   443         self.assertEqual(len(self._erqlexpr_rset('add', 'Affaire')), 1)
   444         # no change for rqlexpr to add and delete concerne relation
   444         # no change for rqlexpr to add and delete concerne relation
   445         self.assertEqual(len(self._rrqlexpr_rset('delete', 'concerne')), len(delete_concerne_rqlexpr))
   445         self.assertEqual(len(self._rrqlexpr_rset('delete', 'concerne')), len(delete_concerne_rqlexpr))
   446         self.assertEqual(len(self._rrqlexpr_rset('add', 'concerne')), len(add_concerne_rqlexpr))
   446         self.assertEqual(len(self._rrqlexpr_rset('add', 'concerne')), len(add_concerne_rqlexpr))
   447         # * migrschema involve:
   447         # * migrschema involve:
   448         #   * 7 rqlexprs deletion (2 in (Affaire read + Societe + travaille) + 1
   448         #   * 7 erqlexprs deletions (2 in (Affaire + Societe + Note.para) + 1 Note.something
   449         #     in para attribute)
   449         #   * 2 rrqlexprs deletions (travaille)
   450         #   * 1 update (Affaire update)
   450         #   * 1 update (Affaire update)
   451         #   * 2 new (Note add, ecrit_par add)
   451         #   * 2 new (Note add, ecrit_par add)
   452         #   * 2 implicit new for attributes update_permission (Note.para, Personne.test)
   452         #   * 2 implicit new for attributes (Note.para, Person.test)
   453         # remaining orphan rql expr which should be deleted at commit (composite relation)
   453         # remaining orphan rql expr which should be deleted at commit (composite relation)
   454         self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression, '
   454         # unattached expressions -> pending deletion on commit
   455                                          'NOT ET1 read_permission X, NOT ET2 add_permission X, '
   455         self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression, X exprtype "ERQLExpression",'
   456                                          'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0],
   456                                         'NOT ET1 read_permission X, NOT ET2 add_permission X, '
   457                           7+1)
   457                                         'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0],
       
   458                           7)
       
   459         self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression, X exprtype "RRQLExpression",'
       
   460                                         'NOT ET1 read_permission X, NOT ET2 add_permission X, '
       
   461                                         'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0],
       
   462                           2)
   458         # finally
   463         # finally
   459         self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0],
   464         self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0],
   460                           nbrqlexpr_start + 1 + 2 + 2)
   465                          nbrqlexpr_start + 1 + 2 + 2 + 2)
   461         self.mh.commit()
   466         self.mh.commit()
   462         # unique_together test
   467         # unique_together test
   463         self.assertEqual(len(self.schema.eschema('Personne')._unique_together), 1)
   468         self.assertEqual(len(self.schema.eschema('Personne')._unique_together), 1)
   464         self.assertCountEqual(self.schema.eschema('Personne')._unique_together[0],
   469         self.assertCountEqual(self.schema.eschema('Personne')._unique_together[0],
   465                                            ('nom', 'prenom', 'datenaiss'))
   470                                            ('nom', 'prenom', 'datenaiss'))