test/unittest_rset.py
changeset 5557 1a534c596bff
parent 5426 0d4853a6e5ee
child 5679 0f2ded880d01
equal deleted inserted replaced
5556:9ab2b4c74baf 5557:1a534c596bff
   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):