test/unittest_rtags.py
author Stephanie Marcu <stephanie.marcu@logilab.fr>
Tue, 19 Jan 2010 17:50:48 +0100
changeset 4268 e9bed3bc1333
parent 4212 ab6573088b4a
child 4491 a0f48c31b58a
permissions -rw-r--r--
remove common/test/data directory from __pkginfo__, MANIFEST and debian rules to allow cubicweb installation
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
4212
ab6573088b4a update copyright: welcome 2010
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2657
diff changeset
     4
:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
1977
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()