210 rqlst1 = self.rset.syntax_tree() |
210 rqlst1 = self.rset.syntax_tree() |
211 rqlst2 = self.rset.syntax_tree() |
211 rqlst2 = self.rset.syntax_tree() |
212 self.assert_(rqlst1 is rqlst2) |
212 self.assert_(rqlst1 is rqlst2) |
213 |
213 |
214 def test_get_entity_simple(self): |
214 def test_get_entity_simple(self): |
215 self.add_entity('CWUser', login=u'adim', upassword='adim', |
215 self.request().create_entity('CWUser', login=u'adim', upassword='adim', |
216 surname=u'di mascio', firstname=u'adrien') |
216 surname=u'di mascio', firstname=u'adrien') |
217 e = self.entity('Any X,T WHERE X login "adim", X surname T') |
217 e = self.entity('Any X,T WHERE X login "adim", X surname T') |
218 self.assertEquals(e['surname'], 'di mascio') |
218 self.assertEquals(e['surname'], 'di mascio') |
219 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
219 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
220 self.assertRaises(KeyError, e.__getitem__, 'creation_date') |
220 self.assertRaises(KeyError, e.__getitem__, 'creation_date') |
222 e.complete() |
222 e.complete() |
223 self.assertEquals(e['firstname'], 'adrien') |
223 self.assertEquals(e['firstname'], 'adrien') |
224 self.assertEquals(pprelcachedict(e._related_cache), []) |
224 self.assertEquals(pprelcachedict(e._related_cache), []) |
225 |
225 |
226 def test_get_entity_advanced(self): |
226 def test_get_entity_advanced(self): |
227 self.add_entity('Bookmark', title=u'zou', path=u'/view') |
227 self.request().create_entity('Bookmark', title=u'zou', path=u'/view') |
228 self.execute('SET X bookmarked_by Y WHERE X is Bookmark, Y login "anon"') |
228 self.execute('SET X bookmarked_by Y WHERE X is Bookmark, Y login "anon"') |
229 rset = self.execute('Any X,Y,XT,YN WHERE X bookmarked_by Y, X title XT, Y login YN') |
229 rset = self.execute('Any X,Y,XT,YN WHERE X bookmarked_by Y, X title XT, Y login YN') |
230 |
230 |
231 e = rset.get_entity(0, 0) |
231 e = rset.get_entity(0, 0) |
232 self.assertEquals(e.cw_row, 0) |
232 self.assertEquals(e.cw_row, 0) |
260 # be filed from our query rset |
260 # be filed from our query rset |
261 self.assertEquals(pprelcachedict(e._related_cache), |
261 self.assertEquals(pprelcachedict(e._related_cache), |
262 [('in_state_subject', [seid])]) |
262 [('in_state_subject', [seid])]) |
263 |
263 |
264 def test_get_entity_advanced_prefilled_cache(self): |
264 def test_get_entity_advanced_prefilled_cache(self): |
265 e = self.add_entity('Bookmark', title=u'zou', path=u'path') |
265 e = self.request().create_entity('Bookmark', title=u'zou', path=u'path') |
266 self.commit() |
266 self.commit() |
267 rset = self.execute('Any X,U,S,XT,UL,SN WHERE X created_by U, U in_state S, ' |
267 rset = self.execute('Any X,U,S,XT,UL,SN WHERE X created_by U, U in_state S, ' |
268 'X title XT, S name SN, U login UL, X eid %s' % e.eid) |
268 'X title XT, S name SN, U login UL, X eid %s' % e.eid) |
269 e = rset.get_entity(0, 0) |
269 e = rset.get_entity(0, 0) |
270 self.assertEquals(e['title'], 'zou') |
270 self.assertEquals(e['title'], 'zou') |
293 self.assertIsInstance(cached, ResultSet) |
293 self.assertIsInstance(cached, ResultSet) |
294 self.assertEquals(cached.rowcount, 0) |
294 self.assertEquals(cached.rowcount, 0) |
295 |
295 |
296 |
296 |
297 def test_get_entity_union(self): |
297 def test_get_entity_union(self): |
298 e = self.add_entity('Bookmark', title=u'manger', path=u'path') |
298 e = self.request().create_entity('Bookmark', title=u'manger', path=u'path') |
299 rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' |
299 rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' |
300 '((Any X,N WHERE X is Bookmark, X title N)' |
300 '((Any X,N WHERE X is Bookmark, X title N)' |
301 ' UNION ' |
301 ' UNION ' |
302 ' (Any X,N WHERE X is CWGroup, X name N))') |
302 ' (Any X,N WHERE X is CWGroup, X name N))') |
303 expected = (('CWGroup', 'guests'), ('CWGroup', 'managers'), |
303 expected = (('CWGroup', 'guests'), ('CWGroup', 'managers'), |
308 self.assertEquals(entity.__regid__, etype) |
308 self.assertEquals(entity.__regid__, etype) |
309 attr = etype == 'Bookmark' and 'title' or 'name' |
309 attr = etype == 'Bookmark' and 'title' or 'name' |
310 self.assertEquals(entity[attr], n) |
310 self.assertEquals(entity[attr], n) |
311 |
311 |
312 def test_related_entity_optional(self): |
312 def test_related_entity_optional(self): |
313 e = self.add_entity('Bookmark', title=u'aaaa', path=u'path') |
313 e = self.request().create_entity('Bookmark', title=u'aaaa', path=u'path') |
314 rset = self.execute('Any B,U,L WHERE B bookmarked_by U?, U login L') |
314 rset = self.execute('Any B,U,L WHERE B bookmarked_by U?, U login L') |
315 entity, rtype = rset.related_entity(0, 2) |
315 entity, rtype = rset.related_entity(0, 2) |
316 self.assertEquals(entity, None) |
316 self.assertEquals(entity, None) |
317 self.assertEquals(rtype, None) |
317 self.assertEquals(rtype, None) |
318 |
318 |
319 def test_related_entity_union_subquery(self): |
319 def test_related_entity_union_subquery(self): |
320 e = self.add_entity('Bookmark', title=u'aaaa', path=u'path') |
320 e = self.request().create_entity('Bookmark', title=u'aaaa', path=u'path') |
321 rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' |
321 rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' |
322 '((Any X,N WHERE X is CWGroup, X name N)' |
322 '((Any X,N WHERE X is CWGroup, X name N)' |
323 ' UNION ' |
323 ' UNION ' |
324 ' (Any X,N WHERE X is Bookmark, X title N))') |
324 ' (Any X,N WHERE X is Bookmark, X title N))') |
325 entity, rtype = rset.related_entity(0, 1) |
325 entity, rtype = rset.related_entity(0, 1) |