test/unittest_rset.py
changeset 2773 b2530e3e0afb
parent 2635 c94df21f7ab2
child 2778 3f6dfc312760
equal deleted inserted replaced
2767:58c519e5a31f 2773:b2530e3e0afb
     8 """
     8 """
     9 #from __future__ import with_statement
     9 #from __future__ import with_statement
    10 
    10 
    11 from logilab.common.testlib import TestCase, unittest_main
    11 from logilab.common.testlib import TestCase, unittest_main
    12 
    12 
    13 from cubicweb.devtools.apptest import EnvBasedTC
    13 from cubicweb.devtools.testlib import CubicWebTC
    14 from cubicweb.selectors import traced_selection
    14 from cubicweb.selectors import traced_selection
    15 
    15 
    16 from urlparse import urlsplit
    16 from urlparse import urlsplit
    17 from rql import parse
    17 from rql import parse
    18 
    18 
    53                 result = list(attr_desc_iterator(parse(rql).children[0], var_index))
    53                 result = list(attr_desc_iterator(parse(rql).children[0], var_index))
    54                 self.assertEquals(result, relations)
    54                 self.assertEquals(result, relations)
    55 
    55 
    56 
    56 
    57 
    57 
    58 class ResultSetTC(EnvBasedTC):
    58 class ResultSetTC(CubicWebTC):
    59 
    59 
    60     def setUp(self):
    60     def setUp(self):
    61         super(ResultSetTC, self).setUp()
    61         super(ResultSetTC, self).setUp()
    62         self.rset = ResultSet([[12, 'adim'], [13, 'syt']],
    62         self.rset = ResultSet([[12, 'adim'], [13, 'syt']],
    63                               'Any U,L where U is CWUser, U login L',
    63                               'Any U,L where U is CWUser, U login L',
    98     def test_resultset_limit(self):
    98     def test_resultset_limit(self):
    99         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
    99         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
   100                        'Any U,L where U is CWUser, U login L',
   100                        'Any U,L where U is CWUser, U login L',
   101                        description=[['CWUser', 'String']] * 3)
   101                        description=[['CWUser', 'String']] * 3)
   102         rs.req = self.request()
   102         rs.req = self.request()
   103         rs.vreg = self.env.vreg
   103         rs.vreg = self.vreg
   104 
   104 
   105         self.assertEquals(rs.limit(2).rows, [[12000, 'adim'], [13000, 'syt']])
   105         self.assertEquals(rs.limit(2).rows, [[12000, 'adim'], [13000, 'syt']])
   106         rs2 = rs.limit(2, offset=1)
   106         rs2 = rs.limit(2, offset=1)
   107         self.assertEquals(rs2.rows, [[13000, 'syt'], [14000, 'nico']])
   107         self.assertEquals(rs2.rows, [[13000, 'syt'], [14000, 'nico']])
   108         self.assertEquals(rs2.get_entity(0, 0).row, 0)
   108         self.assertEquals(rs2.get_entity(0, 0).row, 0)
   113     def test_resultset_filter(self):
   113     def test_resultset_filter(self):
   114         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
   114         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
   115                        'Any U,L where U is CWUser, U login L',
   115                        'Any U,L where U is CWUser, U login L',
   116                        description=[['CWUser', 'String']] * 3)
   116                        description=[['CWUser', 'String']] * 3)
   117         rs.req = self.request()
   117         rs.req = self.request()
   118         rs.vreg = self.env.vreg
   118         rs.vreg = self.vreg
   119         def test_filter(entity):
   119         def test_filter(entity):
   120             return entity.login != 'nico'
   120             return entity.login != 'nico'
   121 
   121 
   122         rs2 = rs.filtered_rset(test_filter)
   122         rs2 = rs.filtered_rset(test_filter)
   123         self.assertEquals(len(rs2), 2)
   123         self.assertEquals(len(rs2), 2)
   138     def test_resultset_sort(self):
   138     def test_resultset_sort(self):
   139         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
   139         rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']],
   140                        'Any U,L where U is CWUser, U login L',
   140                        'Any U,L where U is CWUser, U login L',
   141                        description=[['CWUser', 'String']] * 3)
   141                        description=[['CWUser', 'String']] * 3)
   142         rs.req = self.request()
   142         rs.req = self.request()
   143         rs.vreg = self.env.vreg
   143         rs.vreg = self.vreg
   144 
   144 
   145         rs2 = rs.sorted_rset(lambda e:e['login'])
   145         rs2 = rs.sorted_rset(lambda e:e['login'])
   146         self.assertEquals(len(rs2), 3)
   146         self.assertEquals(len(rs2), 3)
   147         self.assertEquals([login for _, login in rs2], ['adim', 'nico', 'syt'])
   147         self.assertEquals([login for _, login in rs2], ['adim', 'nico', 'syt'])
   148         # make sure rs is unchanged
   148         # make sure rs is unchanged
   168                         [14000, 'nico', u"L'épluchage du castor commun"]],
   168                         [14000, 'nico', u"L'épluchage du castor commun"]],
   169                        'Any U, L, T WHERE U is CWUser, U login L,'\
   169                        'Any U, L, T WHERE U is CWUser, U login L,'\
   170                        'D created_by U, D title T',
   170                        'D created_by U, D title T',
   171                        description=[['CWUser', 'String', 'String']] * 5)
   171                        description=[['CWUser', 'String', 'String']] * 5)
   172         rs.req = self.request()
   172         rs.req = self.request()
   173         rs.vreg = self.env.vreg
   173         rs.vreg = self.vreg
   174 
   174 
   175         rsets = rs.split_rset(lambda e:e['login'])
   175         rsets = rs.split_rset(lambda e:e['login'])
   176         self.assertEquals(len(rsets), 3)
   176         self.assertEquals(len(rsets), 3)
   177         self.assertEquals([login for _, login,_ in rsets[0]], ['adim', 'adim'])
   177         self.assertEquals([login for _, login,_ in rsets[0]], ['adim', 'adim'])
   178         self.assertEquals([login for _, login,_ in rsets[1]], ['syt'])
   178         self.assertEquals([login for _, login,_ in rsets[1]], ['syt'])