98 self.assertEquals(email._related_cache.keys(), ['primary_email_object']) |
98 self.assertEquals(email._related_cache.keys(), ['primary_email_object']) |
99 groups = user.in_group |
99 groups = user.in_group |
100 self.assertEquals(sorted(user._related_cache), ['in_group_subject', 'primary_email_subject']) |
100 self.assertEquals(sorted(user._related_cache), ['in_group_subject', 'primary_email_subject']) |
101 for group in groups: |
101 for group in groups: |
102 self.failIf('in_group_subject' in group._related_cache, group._related_cache.keys()) |
102 self.failIf('in_group_subject' in group._related_cache, group._related_cache.keys()) |
103 |
103 |
104 def test_related_limit(self): |
104 def test_related_limit(self): |
105 p = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
105 p = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
106 for tag in u'abcd': |
106 for tag in u'abcd': |
107 self.add_entity('Tag', name=tag) |
107 self.add_entity('Tag', name=tag) |
108 self.execute('SET X tags Y WHERE X is Tag, Y is Personne') |
108 self.execute('SET X tags Y WHERE X is Tag, Y is Personne') |
162 # XXX test unauthorized attribute |
162 # XXX test unauthorized attribute |
163 finally: |
163 finally: |
164 Personne.fetch_attrs = pfetch_attrs |
164 Personne.fetch_attrs = pfetch_attrs |
165 Societe.fetch_attrs = sfetch_attrs |
165 Societe.fetch_attrs = sfetch_attrs |
166 |
166 |
167 |
167 def test_related_rql(self): |
|
168 from cubicweb.entities import fetch_config |
|
169 Personne = self.vreg.etype_class('Personne') |
|
170 Societe = self.vreg.etype_class('Societe') |
|
171 Personne.fetch_attrs, Personne.fetch_order = fetch_config(('nom', 'prenom', 'sexe')) |
|
172 Societe.fetch_attrs, Societe.fetch_order = fetch_config(('nom', 'web')) |
|
173 aff = self.add_entity('Affaire', sujet=u'my subject', ref=u'the ref') |
|
174 self.assertEquals(aff.related_rql('liee_a'), |
|
175 'Any X,AA,AB ORDERBY AA ASC WHERE E eid %(x)s, E liee_a X, ' |
|
176 'X nom AA, X modification_date AB') |
|
177 Societe.fetch_attrs = ('web',) |
|
178 self.assertEquals(aff.related_rql('liee_a'), |
|
179 'Any X ORDERBY Z DESC WHERE X modification_date Z, E eid %(x)s, E liee_a X') |
|
180 |
168 def test_entity_unrelated(self): |
181 def test_entity_unrelated(self): |
169 p = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
182 p = self.add_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
170 e = self.add_entity('Tag', name=u'x') |
183 e = self.add_entity('Tag', name=u'x') |
171 rschema = e.e_schema.subject_relation('tags') |
184 rschema = e.e_schema.subject_relation('tags') |
172 related = [r.eid for r in e.tags] |
185 related = [r.eid for r in e.tags] |
273 ('connait', 'subject'), |
286 ('connait', 'subject'), |
274 ('evaluee', 'subject'), |
287 ('evaluee', 'subject'), |
275 ('travaille', 'subject'), |
288 ('travaille', 'subject'), |
276 ('ecrit_par', 'object'), |
289 ('ecrit_par', 'object'), |
277 ('evaluee', 'object'), |
290 ('evaluee', 'object'), |
|
291 ('liee_a', 'object'), |
278 ('tags', 'object')]) |
292 ('tags', 'object')]) |
279 self.assertListEquals(rbc(e.relations_by_category('generated')), |
293 self.assertListEquals(rbc(e.relations_by_category('generated')), |
280 [('created_by', 'subject'), |
294 [('created_by', 'subject'), |
281 ('creation_date', 'subject'), |
295 ('creation_date', 'subject'), |
282 ('is', 'subject'), |
296 ('is', 'subject'), |