test/unittest_rtags.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Wed, 02 Dec 2009 17:39:56 +0100
branchstable
changeset 3975 569771016abb
parent 2657 de974465d381
child 4212 ab6573088b4a
permissions -rw-r--r--
add a fourth item to 'view box' defintion, dispctrl, so that we can later globally sort all boxes instead of having view boxes before component boxes. 'view' boxes order is configured through uicfg.primaryview_display_ctrl, 'component' boxes order through the cwproperty system.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     1
"""
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     2
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     3
:organization: Logilab
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     4
:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     5
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     6
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1739
diff changeset
     7
"""
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
     8
from logilab.common.testlib import TestCase, unittest_main
2369
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
     9
from cubicweb.rtags import RelationTags, RelationTagsSet, RelationTagsDict
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    10
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    11
class RelationTagsTC(TestCase):
1533
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    12
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    13
    def test_rtags_expansion(self):
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    14
        rtags = RelationTags()
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    15
        rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    16
        rtags.tag_subject_of(('*', 'evaluee', '*'), 'secondary')
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    17
        rtags.tag_object_of(('*', 'tags', '*'), 'generated')
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    18
        self.assertEquals(rtags.get('Note', 'evaluee', '*', 'subject'),
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    19
                          'secondary')
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    20
        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    21
                          'primary')
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    22
        self.assertEquals(rtags.get('Note', 'travaille', '*', 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    23
                          None)
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    24
        self.assertEquals(rtags.get('Note', 'tags', '*', 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    25
                          None)
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    26
        self.assertEquals(rtags.get('*', 'tags', 'Note', 'object'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    27
                          'generated')
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    28
        self.assertEquals(rtags.get('Tag', 'tags', '*', 'object'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    29
                          'generated')
1533
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    30
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    31
#         self.assertEquals(rtags.rtag('evaluee', 'Note', 'subject'), set(('secondary', 'link')))
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    32
#         self.assertEquals(rtags.is_inlined('evaluee', 'Note', 'subject'), False)
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    33
#         self.assertEquals(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link')))
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    34
#         self.assertEquals(rtags.is_inlined('evaluee', 'Personne', 'subject'), False)
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    35
#         self.assertEquals(rtags.rtag('ecrit_par', 'Note', 'object'), set(('inlineview', 'link')))
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    36
#         self.assertEquals(rtags.is_inlined('ecrit_par', 'Note', 'object'), True)
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    37
#         class Personne2(Personne):
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    38
#             id = 'Personne'
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    39
#             __rtags__ = {
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    40
#                 ('evaluee', 'Note', 'subject') : set(('inlineview',)),
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    41
#                 }
2657
de974465d381 [appobject] kill VObject class, move base selector classes to appobject
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2369
diff changeset
    42
#         self.vreg.register_appobject_class(Personne2)
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    43
#         rtags = Personne2.rtags
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    44
#         self.assertEquals(rtags.rtag('evaluee', 'Note', 'subject'), set(('inlineview', 'link')))
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    45
#         self.assertEquals(rtags.is_inlined('evaluee', 'Note', 'subject'), True)
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    46
#         self.assertEquals(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link')))
1533
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    47
#         self.assertEquals(rtags.is_inlined('evaluee', 'Personne', 'subject'), False)
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    48
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    49
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    50
    def test_rtagset_expansion(self):
bcd4bfff658b update rtags api
sylvain.thenault@logilab.fr
parents: 1284
diff changeset
    51
        rtags = RelationTagsSet()
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    52
        rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary')
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    53
        rtags.tag_subject_of(('*', 'travaille', '*'), 'secondary')
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    54
        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    55
                          set(('primary', 'secondary')))
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    56
        self.assertEquals(rtags.get('Note', 'travaille', '*', 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    57
                          set(('secondary',)))
1739
78b0819162a8 final rtag api
sylvain.thenault@logilab.fr
parents: 1721
diff changeset
    58
        self.assertEquals(rtags.get('Note', 'tags', "*", 'subject'),
1721
694f6a50e138 final rtags api (eventually :$)
sylvain.thenault@logilab.fr
parents: 1533
diff changeset
    59
                          set())
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    60
2369
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    61
    def test_rtagdict_expansion(self):
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    62
        rtags = RelationTagsDict()
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    63
        rtags.tag_subject_of(('Societe', 'travaille', '*'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    64
                             {'key1': 'val1', 'key2': 'val1'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    65
        rtags.tag_subject_of(('*', 'travaille', '*'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    66
                             {'key1': 'val0', 'key3': 'val0'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    67
        rtags.tag_subject_of(('Societe', 'travaille', '*'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    68
                             {'key2': 'val2'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    69
        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    70
                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    71
        self.assertEquals(rtags.get('Note', 'travaille', '*', 'subject'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    72
                          {'key1': 'val0', 'key3': 'val0'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    73
        self.assertEquals(rtags.get('Note', 'tags', "*", 'subject'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    74
                          {})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    75
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    76
        rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key1', 'val4')
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    77
        rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key4', 'val4')
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    78
        self.assertEquals(rtags.get('Societe', 'travaille', '*', 'subject'),
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    79
                          {'key1': 'val1', 'key2': 'val2', 'key3': 'val0', 'key4': 'val4'})
5a2b8ed266ca new RelationTagsDict class, use it in uicfg where necessary
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    80
1284
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    81
if __name__ == '__main__':
63ed4f4ff38d basic testing of relation tags
sylvain.thenault@logilab.fr
parents:
diff changeset
    82
    unittest_main()