server/test/unittest_repository.py
branchstable
changeset 9226 653f1d4a1101
parent 9130 0f1504a9fb51
child 9267 24d9b86dfa54
--- 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'