227 surname=u'di mascio', firstname=u'adrien') |
227 surname=u'di mascio', firstname=u'adrien') |
228 e = self.execute('Any X,T WHERE X login "adim", X surname T').get_entity(0, 0) |
228 e = self.execute('Any X,T WHERE X login "adim", X surname T').get_entity(0, 0) |
229 self.assertEquals(e['surname'], 'di mascio') |
229 self.assertEquals(e['surname'], 'di mascio') |
230 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
230 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
231 self.assertRaises(KeyError, e.__getitem__, 'creation_date') |
231 self.assertRaises(KeyError, e.__getitem__, 'creation_date') |
232 self.assertEquals(pprelcachedict(e._related_cache), []) |
232 self.assertEquals(pprelcachedict(e._cw_related_cache), []) |
233 e.complete() |
233 e.complete() |
234 self.assertEquals(e['firstname'], 'adrien') |
234 self.assertEquals(e['firstname'], 'adrien') |
235 self.assertEquals(pprelcachedict(e._related_cache), []) |
235 self.assertEquals(pprelcachedict(e._cw_related_cache), []) |
236 |
236 |
237 def test_get_entity_advanced(self): |
237 def test_get_entity_advanced(self): |
238 self.request().create_entity('Bookmark', title=u'zou', path=u'/view') |
238 self.request().create_entity('Bookmark', title=u'zou', path=u'/view') |
239 self.execute('SET X bookmarked_by Y WHERE X is Bookmark, Y login "anon"') |
239 self.execute('SET X bookmarked_by Y WHERE X is Bookmark, Y login "anon"') |
240 rset = self.execute('Any X,Y,XT,YN WHERE X bookmarked_by Y, X title XT, Y login YN') |
240 rset = self.execute('Any X,Y,XT,YN WHERE X bookmarked_by Y, X title XT, Y login YN') |
243 self.assertEquals(e.cw_row, 0) |
243 self.assertEquals(e.cw_row, 0) |
244 self.assertEquals(e.cw_col, 0) |
244 self.assertEquals(e.cw_col, 0) |
245 self.assertEquals(e['title'], 'zou') |
245 self.assertEquals(e['title'], 'zou') |
246 self.assertRaises(KeyError, e.__getitem__, 'path') |
246 self.assertRaises(KeyError, e.__getitem__, 'path') |
247 self.assertEquals(e.view('text'), 'zou') |
247 self.assertEquals(e.view('text'), 'zou') |
248 self.assertEquals(pprelcachedict(e._related_cache), []) |
248 self.assertEquals(pprelcachedict(e._cw_related_cache), []) |
249 |
249 |
250 e = rset.get_entity(0, 1) |
250 e = rset.get_entity(0, 1) |
251 self.assertEquals(e.cw_row, 0) |
251 self.assertEquals(e.cw_row, 0) |
252 self.assertEquals(e.cw_col, 1) |
252 self.assertEquals(e.cw_col, 1) |
253 self.assertEquals(e['login'], 'anon') |
253 self.assertEquals(e['login'], 'anon') |
254 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
254 self.assertRaises(KeyError, e.__getitem__, 'firstname') |
255 self.assertEquals(pprelcachedict(e._related_cache), |
255 self.assertEquals(pprelcachedict(e._cw_related_cache), |
256 []) |
256 []) |
257 e.complete() |
257 e.complete() |
258 self.assertEquals(e['firstname'], None) |
258 self.assertEquals(e['firstname'], None) |
259 self.assertEquals(e.view('text'), 'anon') |
259 self.assertEquals(e.view('text'), 'anon') |
260 self.assertEquals(pprelcachedict(e._related_cache), |
260 self.assertEquals(pprelcachedict(e._cw_related_cache), |
261 []) |
261 []) |
262 |
262 |
263 self.assertRaises(NotAnEntity, rset.get_entity, 0, 2) |
263 self.assertRaises(NotAnEntity, rset.get_entity, 0, 2) |
264 self.assertRaises(NotAnEntity, rset.get_entity, 0, 3) |
264 self.assertRaises(NotAnEntity, rset.get_entity, 0, 3) |
265 |
265 |
267 rset = self.execute('Any X,S WHERE X in_state S, X login "anon"') |
267 rset = self.execute('Any X,S WHERE X in_state S, X login "anon"') |
268 e = rset.get_entity(0, 0) |
268 e = rset.get_entity(0, 0) |
269 seid = self.execute('State X WHERE X name "activated"')[0][0] |
269 seid = self.execute('State X WHERE X name "activated"')[0][0] |
270 # for_user / in_group are prefetched in CWUser __init__, in_state should |
270 # for_user / in_group are prefetched in CWUser __init__, in_state should |
271 # be filed from our query rset |
271 # be filed from our query rset |
272 self.assertEquals(pprelcachedict(e._related_cache), |
272 self.assertEquals(pprelcachedict(e._cw_related_cache), |
273 [('in_state_subject', [seid])]) |
273 [('in_state_subject', [seid])]) |
274 |
274 |
275 def test_get_entity_advanced_prefilled_cache(self): |
275 def test_get_entity_advanced_prefilled_cache(self): |
276 e = self.request().create_entity('Bookmark', title=u'zou', path=u'path') |
276 e = self.request().create_entity('Bookmark', title=u'zou', path=u'path') |
277 self.commit() |
277 self.commit() |
278 rset = self.execute('Any X,U,S,XT,UL,SN WHERE X created_by U, U in_state S, ' |
278 rset = self.execute('Any X,U,S,XT,UL,SN WHERE X created_by U, U in_state S, ' |
279 'X title XT, S name SN, U login UL, X eid %s' % e.eid) |
279 'X title XT, S name SN, U login UL, X eid %s' % e.eid) |
280 e = rset.get_entity(0, 0) |
280 e = rset.get_entity(0, 0) |
281 self.assertEquals(e['title'], 'zou') |
281 self.assertEquals(e['title'], 'zou') |
282 self.assertEquals(pprelcachedict(e._related_cache), |
282 self.assertEquals(pprelcachedict(e._cw_related_cache), |
283 [('created_by_subject', [5])]) |
283 [('created_by_subject', [5])]) |
284 # first level of recursion |
284 # first level of recursion |
285 u = e.created_by[0] |
285 u = e.created_by[0] |
286 self.assertEquals(u['login'], 'admin') |
286 self.assertEquals(u['login'], 'admin') |
287 self.assertRaises(KeyError, u.__getitem__, 'firstname') |
287 self.assertRaises(KeyError, u.__getitem__, 'firstname') |
296 'WHERE G name "users"')[0][0] |
296 'WHERE G name "users"')[0][0] |
297 rset = self.execute('Any X,E WHERE X eid %(x)s, X primary_email E?', {'x': eid}) |
297 rset = self.execute('Any X,E WHERE X eid %(x)s, X primary_email E?', {'x': eid}) |
298 e = rset.get_entity(0, 0) |
298 e = rset.get_entity(0, 0) |
299 # if any of the assertion below fails with a KeyError, the relation is not cached |
299 # if any of the assertion below fails with a KeyError, the relation is not cached |
300 # related entities should be an empty list |
300 # related entities should be an empty list |
301 self.assertEquals(e.related_cache('primary_email', 'subject', True), ()) |
301 self.assertEquals(e._cw_relation_cache('primary_email', 'subject', True), ()) |
302 # related rset should be an empty rset |
302 # related rset should be an empty rset |
303 cached = e.related_cache('primary_email', 'subject', False) |
303 cached = e._cw_relation_cache('primary_email', 'subject', False) |
304 self.assertIsInstance(cached, ResultSet) |
304 self.assertIsInstance(cached, ResultSet) |
305 self.assertEquals(cached.rowcount, 0) |
305 self.assertEquals(cached.rowcount, 0) |
306 |
306 |
307 |
307 |
308 def test_get_entity_union(self): |
308 def test_get_entity_union(self): |