server/test/unittest_undo.py
branchstable
changeset 6796 e70ca9abfc51
parent 6340 470d8e828fda
child 7241 65d65da31356
equal deleted inserted replaced
6795:f29d24c3d687 6796:e70ca9abfc51
   210         self.commit()
   210         self.commit()
   211         errors = self.cnx.undo_transaction(txuuid)
   211         errors = self.cnx.undo_transaction(txuuid)
   212         self.assertEqual(errors,
   212         self.assertEqual(errors,
   213                           [u"Can't restore relation in_group, object entity "
   213                           [u"Can't restore relation in_group, object entity "
   214                           "%s doesn't exist anymore." % g.eid])
   214                           "%s doesn't exist anymore." % g.eid])
   215         ex = self.assertRaises(ValidationError, self.commit)
   215         with self.assertRaises(ValidationError) as cm:
   216         self.assertEqual(ex.entity, self.toto.eid)
   216             self.commit()
   217         self.assertEqual(ex.errors,
   217         self.assertEqual(cm.exception.entity, self.toto.eid)
       
   218         self.assertEqual(cm.exception.errors,
   218                           {'in_group-subject': u'at least one relation in_group is '
   219                           {'in_group-subject': u'at least one relation in_group is '
   219                            'required on CWUser (%s)' % self.toto.eid})
   220                            'required on CWUser (%s)' % self.toto.eid})
   220 
   221 
   221     def test_undo_creation_1(self):
   222     def test_undo_creation_1(self):
   222         session = self.session
   223         session = self.session
   250         email = self.request().create_entity('EmailAddress', address=u'tutu@cubicweb.org')
   251         email = self.request().create_entity('EmailAddress', address=u'tutu@cubicweb.org')
   251         prop = self.request().create_entity('CWProperty', pkey=u'ui.default-text-format',
   252         prop = self.request().create_entity('CWProperty', pkey=u'ui.default-text-format',
   252                                             value=u'text/html')
   253                                             value=u'text/html')
   253         tutu.set_relations(use_email=email, reverse_for_user=prop)
   254         tutu.set_relations(use_email=email, reverse_for_user=prop)
   254         self.commit()
   255         self.commit()
   255         ex = self.assertRaises(ValidationError,
   256         with self.assertRaises(ValidationError) as cm:
   256                                self.cnx.undo_transaction, txuuid)
   257             self.cnx.undo_transaction(txuuid)
   257         self.assertEqual(ex.entity, tutu.eid)
   258         self.assertEqual(cm.exception.entity, tutu.eid)
   258         self.assertEqual(ex.errors,
   259         self.assertEqual(cm.exception.errors,
   259                           {None: 'some later transaction(s) touch entity, undo them first'})
   260                           {None: 'some later transaction(s) touch entity, undo them first'})
   260 
   261 
   261     def test_undo_creation_integrity_2(self):
   262     def test_undo_creation_integrity_2(self):
   262         session = self.session
   263         session = self.session
   263         g = session.create_entity('CWGroup', name=u'staff')
   264         g = session.create_entity('CWGroup', name=u'staff')
   264         txuuid = self.commit()
   265         txuuid = self.commit()
   265         session.execute('DELETE U in_group G WHERE U eid %(x)s', {'x': self.toto.eid})
   266         session.execute('DELETE U in_group G WHERE U eid %(x)s', {'x': self.toto.eid})
   266         self.toto.set_relations(in_group=g)
   267         self.toto.set_relations(in_group=g)
   267         self.commit()
   268         self.commit()
   268         ex = self.assertRaises(ValidationError,
   269         with self.assertRaises(ValidationError) as cm:
   269                                self.cnx.undo_transaction, txuuid)
   270             self.cnx.undo_transaction(txuuid)
   270         self.assertEqual(ex.entity, g.eid)
   271         self.assertEqual(cm.exception.entity, g.eid)
   271         self.assertEqual(ex.errors,
   272         self.assertEqual(cm.exception.errors,
   272                           {None: 'some later transaction(s) touch entity, undo them first'})
   273                           {None: 'some later transaction(s) touch entity, undo them first'})
   273         # self.assertEqual(errors,
   274         # self.assertEqual(errors,
   274         #                   [u"Can't restore relation in_group, object entity "
   275         #                   [u"Can't restore relation in_group, object entity "
   275         #                   "%s doesn't exist anymore." % g.eid])
   276         #                   "%s doesn't exist anymore." % g.eid])
   276         # ex = self.assertRaises(ValidationError, self.commit)
   277         # with self.assertRaises(ValidationError) as cm: self.commit()
   277         # self.assertEqual(ex.entity, self.toto.eid)
   278         # self.assertEqual(cm.exception.entity, self.toto.eid)
   278         # self.assertEqual(ex.errors,
   279         # self.assertEqual(cm.exception.errors,
   279         #                   {'in_group-subject': u'at least one relation in_group is '
   280         #                   {'in_group-subject': u'at least one relation in_group is '
   280         #                    'required on CWUser (%s)' % self.toto.eid})
   281         #                    'required on CWUser (%s)' % self.toto.eid})
   281 
   282 
   282     # test implicit 'replacement' of an inlined relation
   283     # test implicit 'replacement' of an inlined relation
   283 
   284