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']) |