test/unittest_rset.py
changeset 4461 a35c76ffed92
parent 4427 410c99a917fa
child 4536 02d0803a60b8
equal deleted inserted replaced
4460:5c22869079b9 4461:a35c76ffed92
   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)