cubicweb/web/test/unittest_uicfg.py
branch3.25
changeset 12213 1d7e4f98f902
parent 12211 1a5911825ef5
--- a/cubicweb/web/test/unittest_uicfg.py	Fri Oct 06 10:00:36 2017 +0200
+++ b/cubicweb/web/test/unittest_uicfg.py	Fri Oct 06 15:14:18 2017 +0200
@@ -19,7 +19,10 @@
 import copy
 import warnings
 
-from cubicweb.devtools.testlib import CubicWebTC
+from yams.buildobjs import RelationDefinition, EntityType
+
+from cubicweb.devtools.testlib import CubicWebTC, BaseTestCase
+from cubicweb.schema import build_schema_from_namespace
 from cubicweb.web import uihelper, formwidgets as fwdgs
 from cubicweb.web.views import uicfg
 
@@ -144,6 +147,55 @@
         self.assertTrue(obj is custom_afs)
 
 
+def _schema():
+
+    class Personne(EntityType):
+        pass
+
+    class Societe(EntityType):
+        pass
+
+    class Tag(EntityType):
+        pass
+
+    class travaille(RelationDefinition):
+        subject = 'Personne'
+        object = 'Societe'
+
+    class tags(RelationDefinition):
+        subject = 'Tag'
+        object = ('Personne', 'Societe', 'Tag')
+
+    return build_schema_from_namespace(locals().items())
+
+
+class AutoformSectionTC(BaseTestCase):
+
+    def test_derivation(self):
+        schema = _schema()
+        afs = uicfg.AutoformSectionRelationTags()
+        afs.tag_subject_of(('Personne', 'travaille', '*'), 'main', 'relations')
+        afs.tag_object_of(('*', 'travaille', 'Societe'), 'main', 'relations')
+        afs.tag_subject_of(('Tag', 'tags', '*'), 'main', 'relations')
+
+        afs2 = afs.derive(__name__, afs.__select__)
+        afs2.tag_subject_of(('Personne', 'travaille', '*'), 'main', 'attributes')
+        afs2.tag_object_of(('*', 'travaille', 'Societe'), 'main', 'attributes')
+        afs2.tag_subject_of(('Tag', 'tags', 'Societe'), 'main', 'attributes')
+
+        afs.init(schema)
+        afs2.init(schema)
+
+        self.assertEqual(afs2.etype_get('Tag', 'tags', 'subject', 'Personne'),
+                         set(('main_relations', 'muledit_hidden', 'inlined_relations')))
+        self.assertEqual(afs2.etype_get('Tag', 'tags', 'subject', 'Societe'),
+                         set(('main_attributes', 'muledit_hidden', 'inlined_attributes')))
+        self.assertEqual(afs2.etype_get('Personne', 'travaille', 'subject', 'Societe'),
+                         set(('main_attributes', 'muledit_hidden', 'inlined_attributes')))
+        self.assertEqual(afs2.etype_get('Societe', 'travaille', 'object', 'Personne'),
+                         set(('main_attributes', 'muledit_hidden', 'inlined_attributes')))
+
+
 if __name__ == '__main__':
     import unittest
     unittest.main()