diff -r 4b81252fccdd -r 653f1d4a1101 server/test/unittest_repository.py --- a/server/test/unittest_repository.py Wed Aug 28 12:08:31 2013 +0200 +++ b/server/test/unittest_repository.py Mon Sep 23 12:47:12 2013 +0200 @@ -558,6 +558,30 @@ req.create_entity('Affaire', ref=u'AFF02') req.execute('SET A duration 10 WHERE A is Affaire') + + def test_user_friendly_error(self): + from cubicweb.entities.adapters import IUserFriendlyUniqueTogether + class MyIUserFriendlyUniqueTogether(IUserFriendlyUniqueTogether): + __select__ = IUserFriendlyUniqueTogether.__select__ & is_instance('Societe') + def raise_user_exception(self): + raise ValidationError(self.entity.eid, {'hip': 'hop'}) + + with self.temporary_appobjects(MyIUserFriendlyUniqueTogether): + req = self.request() + s = req.create_entity('Societe', nom=u'Logilab', type=u'ssll', cp=u'75013') + self.commit() + with self.assertRaises(ValidationError) as cm: + req.create_entity('Societe', nom=u'Logilab', type=u'ssll', cp=u'75013') + self.assertEqual(cm.exception.errors, {'hip': 'hop'}) + self.rollback() + req.create_entity('Societe', nom=u'Logilab', type=u'ssll', cp=u'31400') + with self.assertRaises(ValidationError) as cm: + s.cw_set(cp=u'31400') + self.assertEqual(cm.exception.entity, s.eid) + self.assertEqual(cm.exception.errors, {'hip': 'hop'}) + self.rollback() + + class SchemaDeserialTC(CubicWebTC): appid = 'data-schemaserial'