test/unittest_entity.py
branchreldefsecurity
changeset 3877 7ca53fc72a0a
parent 3826 0c0c051863cb
child 3890 d7a270f50f54
equal deleted inserted replaced
3876:1169d3154be6 3877:7ca53fc72a0a
    61         self.assertEquals(len(e.created_by), 0)
    61         self.assertEquals(len(e.created_by), 0)
    62 
    62 
    63     def test_copy_with_nonmeta_composite_inlined(self):
    63     def test_copy_with_nonmeta_composite_inlined(self):
    64         p = self.add_entity('Personne', nom=u'toto')
    64         p = self.add_entity('Personne', nom=u'toto')
    65         oe = self.add_entity('Note', type=u'x')
    65         oe = self.add_entity('Note', type=u'x')
    66         self.schema['ecrit_par'].set_rproperty('Note', 'Personne', 'composite', 'subject')
    66         self.schema['ecrit_par'].rdef('Note', 'Personne').composite = 'subject'
    67         self.execute('SET T ecrit_par U WHERE T eid %(t)s, U eid %(u)s',
    67         self.execute('SET T ecrit_par U WHERE T eid %(t)s, U eid %(u)s',
    68                      {'t': oe.eid, 'u': p.eid}, ('t','u'))
    68                      {'t': oe.eid, 'u': p.eid}, ('t','u'))
    69         e = self.add_entity('Note', type=u'z')
    69         e = self.add_entity('Note', type=u'z')
    70         e.copy_relations(oe.eid)
    70         e.copy_relations(oe.eid)
    71         self.failIf(e.ecrit_par)
    71         self.failIf(e.ecrit_par)
   125         Personne = self.vreg['etypes'].etype_class('Personne')
   125         Personne = self.vreg['etypes'].etype_class('Personne')
   126         Societe = self.vreg['etypes'].etype_class('Societe')
   126         Societe = self.vreg['etypes'].etype_class('Societe')
   127         Note = self.vreg['etypes'].etype_class('Note')
   127         Note = self.vreg['etypes'].etype_class('Note')
   128         peschema = Personne.e_schema
   128         peschema = Personne.e_schema
   129         seschema = Societe.e_schema
   129         seschema = Societe.e_schema
   130         peschema.subjrels['travaille'].set_rproperty(peschema, seschema, 'cardinality', '1*')
   130         peschema.subjrels['travaille'].rdef(peschema, seschema).cardinality = '1*'
   131         peschema.subjrels['connait'].set_rproperty(peschema, peschema, 'cardinality', '11')
   131         peschema.subjrels['connait'].rdef(peschema, peschema).cardinality = '11'
   132         peschema.subjrels['evaluee'].set_rproperty(peschema, Note.e_schema, 'cardinality', '1*')
   132         peschema.subjrels['evaluee'].rdef(peschema, Note.e_schema).cardinality = '1*'
   133         seschema.subjrels['evaluee'].set_rproperty(seschema, Note.e_schema, 'cardinality', '1*')
   133         seschema.subjrels['evaluee'].rdef(seschema, Note.e_schema).cardinality = '1*'
   134         # testing basic fetch_attrs attribute
   134         # testing basic fetch_attrs attribute
   135         self.assertEquals(Personne.fetch_rql(user),
   135         self.assertEquals(Personne.fetch_rql(user),
   136                           'Any X,AA,AB,AC ORDERBY AA ASC '
   136                           'Any X,AA,AB,AC ORDERBY AA ASC '
   137                           'WHERE X is Personne, X nom AA, X prenom AB, X modification_date AC')
   137                           'WHERE X is Personne, X nom AA, X prenom AB, X modification_date AC')
   138         pfetch_attrs = Personne.fetch_attrs
   138         pfetch_attrs = Personne.fetch_attrs
   163             # testing symetric relation
   163             # testing symetric relation
   164             Personne.fetch_attrs = ('nom', 'connait')
   164             Personne.fetch_attrs = ('nom', 'connait')
   165             self.assertEquals(Personne.fetch_rql(user), 'Any X,AA,AB ORDERBY AA ASC '
   165             self.assertEquals(Personne.fetch_rql(user), 'Any X,AA,AB ORDERBY AA ASC '
   166                               'WHERE X is Personne, X nom AA, X connait AB?')
   166                               'WHERE X is Personne, X nom AA, X connait AB?')
   167             # testing optional relation
   167             # testing optional relation
   168             peschema.subjrels['travaille'].set_rproperty(peschema, seschema, 'cardinality', '?*')
   168             peschema.subjrels['travaille'].rdef(peschema, seschema).cardinality = '?*'
   169             Personne.fetch_attrs = ('nom', 'prenom', 'travaille')
   169             Personne.fetch_attrs = ('nom', 'prenom', 'travaille')
   170             Societe.fetch_attrs = ('nom',)
   170             Societe.fetch_attrs = ('nom',)
   171             self.assertEquals(Personne.fetch_rql(user),
   171             self.assertEquals(Personne.fetch_rql(user),
   172                               'Any X,AA,AB,AC,AD ORDERBY AA ASC WHERE X is Personne, X nom AA, X prenom AB, X travaille AC?, AC nom AD')
   172                               'Any X,AA,AB,AC,AD ORDERBY AA ASC WHERE X is Personne, X nom AA, X prenom AB, X travaille AC?, AC nom AD')
   173             # testing relation with cardinality > 1
   173             # testing relation with cardinality > 1
   174             peschema.subjrels['travaille'].set_rproperty(peschema, seschema, 'cardinality', '**')
   174             peschema.subjrels['travaille'].rdef(peschema, seschema).cardinality = '**'
   175             self.assertEquals(Personne.fetch_rql(user),
   175             self.assertEquals(Personne.fetch_rql(user),
   176                               'Any X,AA,AB ORDERBY AA ASC WHERE X is Personne, X nom AA, X prenom AB')
   176                               'Any X,AA,AB ORDERBY AA ASC WHERE X is Personne, X nom AA, X prenom AB')
   177             # XXX test unauthorized attribute
   177             # XXX test unauthorized attribute
   178         finally:
   178         finally:
   179             Personne.fetch_attrs = pfetch_attrs
   179             Personne.fetch_attrs = pfetch_attrs