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 |