cubicweb/test/unittest_rtags.py
changeset 11888 0849a5eb57b8
parent 11887 42461734c3e8
child 11932 7b2247098f58
equal deleted inserted replaced
11887:42461734c3e8 11888:0849a5eb57b8
    18 
    18 
    19 import unittest
    19 import unittest
    20 
    20 
    21 from cubicweb.rtags import RelationTags, RelationTagsSet, RelationTagsDict
    21 from cubicweb.rtags import RelationTags, RelationTagsSet, RelationTagsDict
    22 
    22 
       
    23 
    23 class RelationTagsTC(unittest.TestCase):
    24 class RelationTagsTC(unittest.TestCase):
    24 
    25 
    25     def test_rtags_expansion(self):
    26     def setUp(self):
    26         rtags = RelationTags()
    27         self.rtags = RelationTags()
    27         rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
    28         self.rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
    28         rtags.tag_subject_of(('*', 'evaluee', '*'), 'secondary')
    29         self.rtags.tag_subject_of(('*', 'evaluee', '*'), 'secondary')
    29         rtags.tag_object_of(('*', 'tags', '*'), 'generated')
    30         self.rtags.tag_object_of(('*', 'tags', '*'), 'generated')
    30         self.assertEqual(rtags.get('Note', 'evaluee', '*', 'subject'),
       
    31                           'secondary')
       
    32         self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'),
       
    33                           'primary')
       
    34         self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'),
       
    35                           None)
       
    36         self.assertEqual(rtags.get('Note', 'tags', '*', 'subject'),
       
    37                           None)
       
    38         self.assertEqual(rtags.get('*', 'tags', 'Note', 'object'),
       
    39                           'generated')
       
    40         self.assertEqual(rtags.get('Tag', 'tags', '*', 'object'),
       
    41                           'generated')
       
    42 
    31 
    43 #         self.assertEqual(rtags.rtag('evaluee', 'Note', 'subject'), set(('secondary', 'link')))
    32     def test_expansion(self):
    44 #         self.assertEqual(rtags.is_inlined('evaluee', 'Note', 'subject'), False)
    33         self.assertEqual(self.rtags.get('Note', 'evaluee', '*', 'subject'),
    45 #         self.assertEqual(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link')))
    34                          'secondary')
    46 #         self.assertEqual(rtags.is_inlined('evaluee', 'Personne', 'subject'), False)
    35         self.assertEqual(self.rtags.get('Societe', 'travaille', '*', 'subject'),
    47 #         self.assertEqual(rtags.rtag('ecrit_par', 'Note', 'object'), set(('inlineview', 'link')))
    36                          'primary')
    48 #         self.assertEqual(rtags.is_inlined('ecrit_par', 'Note', 'object'), True)
    37         self.assertEqual(self.rtags.get('Note', 'travaille', '*', 'subject'),
    49 #         class Personne2(Personne):
    38                          None)
    50 #             id = 'Personne'
    39         self.assertEqual(self.rtags.get('Note', 'tags', '*', 'subject'),
    51 #             __rtags__ = {
    40                          None)
    52 #                 ('evaluee', 'Note', 'subject') : set(('inlineview',)),
    41         self.assertEqual(self.rtags.get('*', 'tags', 'Note', 'object'),
    53 #                 }
    42                          'generated')
    54 #         self.vreg.register(Personne2)
    43         self.assertEqual(self.rtags.get('Tag', 'tags', '*', 'object'),
    55 #         rtags = Personne2.rtags
    44                          'generated')
    56 #         self.assertEqual(rtags.rtag('evaluee', 'Note', 'subject'), set(('inlineview', 'link')))
    45 
    57 #         self.assertEqual(rtags.is_inlined('evaluee', 'Note', 'subject'), True)
    46     def test_expansion_with_parent(self):
    58 #         self.assertEqual(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link')))
    47         derived_rtags = self.rtags.derive(__name__, None)
    59 #         self.assertEqual(rtags.is_inlined('evaluee', 'Personne', 'subject'), False)
    48         derived_rtags.tag_subject_of(('Societe', 'travaille', '*'), 'secondary')
       
    49         derived_rtags.tag_subject_of(('Note', 'evaluee', '*'), 'primary')
       
    50         self.rtags.tag_object_of(('*', 'tags', '*'), 'hidden')
       
    51 
       
    52         self.assertEqual(derived_rtags.get('Note', 'evaluee', '*', 'subject'),
       
    53                          'primary')
       
    54         self.assertEqual(derived_rtags.get('Societe', 'evaluee', '*', 'subject'),
       
    55                          'secondary')
       
    56         self.assertEqual(derived_rtags.get('Societe', 'travaille', '*', 'subject'),
       
    57                          'secondary')
       
    58         self.assertEqual(derived_rtags.get('Note', 'travaille', '*', 'subject'),
       
    59                          None)
       
    60         self.assertEqual(derived_rtags.get('*', 'tags', 'Note', 'object'),
       
    61                          'hidden')
    60 
    62 
    61 
    63 
    62     def test_rtagset_expansion(self):
    64 class RelationTagsSetTC(unittest.TestCase):
    63         rtags = RelationTagsSet()
       
    64         rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
       
    65         rtags.tag_subject_of(('*', 'travaille', '*'), 'secondary')
       
    66         self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'),
       
    67                           set(('primary', 'secondary')))
       
    68         self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'),
       
    69                           set(('secondary',)))
       
    70         self.assertEqual(rtags.get('Note', 'tags', "*", 'subject'),
       
    71                           set())
       
    72 
    65 
    73     def test_rtagdict_expansion(self):
    66     def setUp(self):
    74         rtags = RelationTagsDict()
    67         self.rtags = RelationTagsSet()
    75         rtags.tag_subject_of(('Societe', 'travaille', '*'),
    68         self.rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
    76                              {'key1': 'val1', 'key2': 'val1'})
    69         self.rtags.tag_subject_of(('*', 'travaille', '*'), 'secondary')
    77         rtags.tag_subject_of(('*', 'travaille', '*'),
       
    78                              {'key1': 'val0', 'key3': 'val0'})
       
    79         rtags.tag_subject_of(('Societe', 'travaille', '*'),
       
    80                              {'key2': 'val2'})
       
    81         self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'),
       
    82                           {'key1': 'val1', 'key2': 'val2', 'key3': 'val0'})
       
    83         self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'),
       
    84                           {'key1': 'val0', 'key3': 'val0'})
       
    85         self.assertEqual(rtags.get('Note', 'tags', "*", 'subject'),
       
    86                           {})
       
    87 
    70 
    88         rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key1', 'val4')
    71     def test_expansion(self):
    89         rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key4', 'val4')
    72         self.assertEqual(self.rtags.get('Societe', 'travaille', '*', 'subject'),
    90         self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'),
    73                          set(('primary', 'secondary')))
    91                           {'key1': 'val1', 'key2': 'val2', 'key3': 'val0', 'key4': 'val4'})
    74         self.assertEqual(self.rtags.get('Note', 'travaille', '*', 'subject'),
       
    75                          set(('secondary',)))
       
    76         self.assertEqual(self.rtags.get('Note', 'tags', "*", 'subject'),
       
    77                          set())
       
    78 
       
    79     def test_expansion_with_parent(self):
       
    80         derived_rtags = self.rtags.derive(__name__, None)
       
    81         derived_rtags.tag_subject_of(('Societe', 'travaille', '*'), 'derived_primary')
       
    82         self.assertEqual(derived_rtags.get('Societe', 'travaille', '*', 'subject'),
       
    83                          set(('derived_primary', 'secondary')))
       
    84         self.assertEqual(derived_rtags.get('Note', 'travaille', '*', 'subject'),
       
    85                          set(('secondary',)))
       
    86 
       
    87         derived_rtags.tag_subject_of(('*', 'travaille', '*'), 'derived_secondary')
       
    88         self.assertEqual(derived_rtags.get('Societe', 'travaille', '*', 'subject'),
       
    89                          set(('derived_primary', 'derived_secondary')))
       
    90         self.assertEqual(derived_rtags.get('Note', 'travaille', '*', 'subject'),
       
    91                          set(('derived_secondary',)))
       
    92 
       
    93         self.assertEqual(derived_rtags.get('Note', 'tags', "*", 'subject'),
       
    94                          set())
       
    95 
       
    96 
       
    97 class RelationTagsDictTC(unittest.TestCase):
       
    98 
       
    99     def setUp(self):
       
   100         self.rtags = RelationTagsDict()
       
   101         self.rtags.tag_subject_of(('Societe', 'travaille', '*'),
       
   102                                   {'key1': 'val1', 'key2': 'val1'})
       
   103         self.rtags.tag_subject_of(('*', 'travaille', '*'),
       
   104                                   {'key1': 'val0', 'key3': 'val0'})
       
   105         self.rtags.tag_subject_of(('Societe', 'travaille', '*'),
       
   106                                   {'key2': 'val2'})
       
   107 
       
   108     def test_expansion(self):
       
   109         self.assertEqual(self.rtags.get('Societe', 'travaille', '*', 'subject'),
       
   110                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0'})
       
   111         self.assertEqual(self.rtags.get('Note', 'travaille', '*', 'subject'),
       
   112                          {'key1': 'val0', 'key3': 'val0'})
       
   113         self.assertEqual(self.rtags.get('Note', 'tags', "*", 'subject'),
       
   114                          {})
       
   115 
       
   116         self.rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key1', 'val4')
       
   117         self.rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key4', 'val4')
       
   118         self.assertEqual(self.rtags.get('Societe', 'travaille', '*', 'subject'),
       
   119                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0', 'key4': 'val4'})
       
   120 
       
   121     def test_expansion_with_parent(self):
       
   122         derived_rtags = self.rtags.derive(__name__, None)
       
   123 
       
   124         derived_rtags.tag_subject_of(('Societe', 'travaille', '*'),
       
   125                                      {'key0': 'val0'})
       
   126         self.assertEqual(derived_rtags.get('Societe', 'travaille', '*', 'subject'),
       
   127                          {'key0': 'val0', 'key1': 'val0', 'key3': 'val0'})
       
   128         self.assertEqual(derived_rtags.get('Note', 'travaille', '*', 'subject'),
       
   129                          {'key1': 'val0', 'key3': 'val0'})
       
   130         self.assertEqual(derived_rtags.get('Note', 'tags', "*", 'subject'),
       
   131                          {})
       
   132 
       
   133         derived_rtags.tag_subject_of(('*', 'travaille', '*'),
       
   134                                      {'key0': 'val00', 'key4': 'val4'})
       
   135         self.assertEqual(derived_rtags.get('Societe', 'travaille', '*', 'subject'),
       
   136                          {'key0': 'val0', 'key4': 'val4'})
       
   137         self.assertEqual(derived_rtags.get('Note', 'travaille', '*', 'subject'),
       
   138                          {'key0': 'val00', 'key4': 'val4'})
       
   139 
    92 
   140 
    93 if __name__ == '__main__':
   141 if __name__ == '__main__':
    94     unittest.main()
   142     unittest.main()