common/test/unittest_entity.py
changeset 413 a7366dd3c33c
parent 0 b97547f5f1fa
child 618 68702d0c02f1
equal deleted inserted replaced
412:5b3fd2f2ce9b 413:a7366dd3c33c
    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'),