test/unittest_rtags.py
branchstable
changeset 2369 5a2b8ed266ca
parent 1977 606923dff11b
child 2657 de974465d381
--- a/test/unittest_rtags.py	Fri Jul 10 09:44:36 2009 +0200
+++ b/test/unittest_rtags.py	Fri Jul 10 12:15:09 2009 +0200
@@ -6,7 +6,7 @@
 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
 """
 from logilab.common.testlib import TestCase, unittest_main
-from cubicweb.rtags import RelationTags, RelationTagsSet
+from cubicweb.rtags import RelationTags, RelationTagsSet, RelationTagsDict
 
 class RelationTagsTC(TestCase):
 
@@ -53,12 +53,30 @@
         rtags.tag_subject_of(('*', 'travaille', '*'), 'secondary')
         self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
                           set(('primary', 'secondary')))
-        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
-                          set(('primary', 'secondary')))
         self.assertEquals(rtags.get('Note', 'travaille', '*', 'subject'),
                           set(('secondary',)))
         self.assertEquals(rtags.get('Note', 'tags', "*", 'subject'),
                           set())
 
+    def test_rtagdict_expansion(self):
+        rtags = RelationTagsDict()
+        rtags.tag_subject_of(('Societe', 'travaille', '*'),
+                             {'key1': 'val1', 'key2': 'val1'})
+        rtags.tag_subject_of(('*', 'travaille', '*'),
+                             {'key1': 'val0', 'key3': 'val0'})
+        rtags.tag_subject_of(('Societe', 'travaille', '*'),
+                             {'key2': 'val2'})
+        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
+                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0'})
+        self.assertEquals(rtags.get('Note', 'travaille', '*', 'subject'),
+                          {'key1': 'val0', 'key3': 'val0'})
+        self.assertEquals(rtags.get('Note', 'tags', "*", 'subject'),
+                          {})
+
+        rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key1', 'val4')
+        rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key4', 'val4')
+        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
+                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0', 'key4': 'val4'})
+
 if __name__ == '__main__':
     unittest_main()