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() |