|
1 # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
|
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
|
3 # |
|
4 # This file is part of CubicWeb. |
|
5 # |
|
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
|
7 # terms of the GNU Lesser General Public License as published by the Free |
|
8 # Software Foundation, either version 2.1 of the License, or (at your option) |
|
9 # any later version. |
|
10 # |
|
11 # CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
|
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|
13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
|
14 # details. |
|
15 # |
|
16 # You should have received a copy of the GNU Lesser General Public License along |
|
17 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
|
18 """ |
|
19 |
|
20 """ |
|
21 from logilab.common.testlib import TestCase, unittest_main |
|
22 from cubicweb.rtags import RelationTags, RelationTagsSet, RelationTagsDict |
|
23 |
|
24 class RelationTagsTC(TestCase): |
|
25 |
|
26 def test_rtags_expansion(self): |
|
27 rtags = RelationTags() |
|
28 rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary') |
|
29 rtags.tag_subject_of(('*', 'evaluee', '*'), 'secondary') |
|
30 rtags.tag_object_of(('*', 'tags', '*'), 'generated') |
|
31 self.assertEqual(rtags.get('Note', 'evaluee', '*', 'subject'), |
|
32 'secondary') |
|
33 self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'), |
|
34 'primary') |
|
35 self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'), |
|
36 None) |
|
37 self.assertEqual(rtags.get('Note', 'tags', '*', 'subject'), |
|
38 None) |
|
39 self.assertEqual(rtags.get('*', 'tags', 'Note', 'object'), |
|
40 'generated') |
|
41 self.assertEqual(rtags.get('Tag', 'tags', '*', 'object'), |
|
42 'generated') |
|
43 |
|
44 # self.assertEqual(rtags.rtag('evaluee', 'Note', 'subject'), set(('secondary', 'link'))) |
|
45 # self.assertEqual(rtags.is_inlined('evaluee', 'Note', 'subject'), False) |
|
46 # self.assertEqual(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link'))) |
|
47 # self.assertEqual(rtags.is_inlined('evaluee', 'Personne', 'subject'), False) |
|
48 # self.assertEqual(rtags.rtag('ecrit_par', 'Note', 'object'), set(('inlineview', 'link'))) |
|
49 # self.assertEqual(rtags.is_inlined('ecrit_par', 'Note', 'object'), True) |
|
50 # class Personne2(Personne): |
|
51 # id = 'Personne' |
|
52 # __rtags__ = { |
|
53 # ('evaluee', 'Note', 'subject') : set(('inlineview',)), |
|
54 # } |
|
55 # self.vreg.register(Personne2) |
|
56 # rtags = Personne2.rtags |
|
57 # self.assertEqual(rtags.rtag('evaluee', 'Note', 'subject'), set(('inlineview', 'link'))) |
|
58 # self.assertEqual(rtags.is_inlined('evaluee', 'Note', 'subject'), True) |
|
59 # self.assertEqual(rtags.rtag('evaluee', 'Personne', 'subject'), set(('secondary', 'link'))) |
|
60 # self.assertEqual(rtags.is_inlined('evaluee', 'Personne', 'subject'), False) |
|
61 |
|
62 |
|
63 def test_rtagset_expansion(self): |
|
64 rtags = RelationTagsSet() |
|
65 rtags.tag_subject_of(('Societe', 'travaille', '*'), 'primary') |
|
66 rtags.tag_subject_of(('*', 'travaille', '*'), 'secondary') |
|
67 self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'), |
|
68 set(('primary', 'secondary'))) |
|
69 self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'), |
|
70 set(('secondary',))) |
|
71 self.assertEqual(rtags.get('Note', 'tags', "*", 'subject'), |
|
72 set()) |
|
73 |
|
74 def test_rtagdict_expansion(self): |
|
75 rtags = RelationTagsDict() |
|
76 rtags.tag_subject_of(('Societe', 'travaille', '*'), |
|
77 {'key1': 'val1', 'key2': 'val1'}) |
|
78 rtags.tag_subject_of(('*', 'travaille', '*'), |
|
79 {'key1': 'val0', 'key3': 'val0'}) |
|
80 rtags.tag_subject_of(('Societe', 'travaille', '*'), |
|
81 {'key2': 'val2'}) |
|
82 self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'), |
|
83 {'key1': 'val1', 'key2': 'val2', 'key3': 'val0'}) |
|
84 self.assertEqual(rtags.get('Note', 'travaille', '*', 'subject'), |
|
85 {'key1': 'val0', 'key3': 'val0'}) |
|
86 self.assertEqual(rtags.get('Note', 'tags', "*", 'subject'), |
|
87 {}) |
|
88 |
|
89 rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key1', 'val4') |
|
90 rtags.setdefault(('Societe', 'travaille', '*', 'subject'), 'key4', 'val4') |
|
91 self.assertEqual(rtags.get('Societe', 'travaille', '*', 'subject'), |
|
92 {'key1': 'val1', 'key2': 'val2', 'key3': 'val0', 'key4': 'val4'}) |
|
93 |
|
94 if __name__ == '__main__': |
|
95 unittest_main() |