author | Alexandre Fayolle <alexandre.fayolle@logilab.fr> |
Thu, 22 Apr 2010 19:48:04 +0000 | |
branch | stable |
changeset 5377 | 84d14ddfae13 |
parent 4494 | ccb7fce7297b |
child 5385 | b6e250dd7a7d |
child 5389 | 809d3b5b3d31 |
permissions | -rw-r--r-- |
1977
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
1 |
""" |
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
2 |
|
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
3 |
:organization: Logilab |
4212
ab6573088b4a
update copyright: welcome 2010
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3771
diff
changeset
|
4 |
:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. |
1977
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
5 |
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
6 |
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1654
diff
changeset
|
7 |
""" |
5377
84d14ddfae13
[python2.6] prefer python2.6's builtin json module over simplejson
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
4494
diff
changeset
|
8 |
try: |
84d14ddfae13
[python2.6] prefer python2.6's builtin json module over simplejson
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
4494
diff
changeset
|
9 |
from json import loads |
84d14ddfae13
[python2.6] prefer python2.6's builtin json module over simplejson
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
4494
diff
changeset
|
10 |
except ImportError: |
84d14ddfae13
[python2.6] prefer python2.6's builtin json module over simplejson
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
4494
diff
changeset
|
11 |
from simplejson import loads |
0 | 12 |
|
13 |
from logilab.common.testlib import unittest_main |
|
14 |
from logilab.mtconverter import html_unescape |
|
15 |
||
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2650
diff
changeset
|
16 |
from cubicweb.devtools.testlib import CubicWebTC |
0 | 17 |
|
18 |
from cubicweb.web.htmlwidgets import TableWidget |
|
1654 | 19 |
from cubicweb.web.views import vid_from_rset |
0 | 20 |
|
21 |
def loadjson(value): |
|
22 |
return loads(html_unescape(value)) |
|
23 |
||
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2650
diff
changeset
|
24 |
class VidFromRsetTC(CubicWebTC): |
1654 | 25 |
|
0 | 26 |
def test_no_rset(self): |
27 |
req = self.request() |
|
28 |
self.assertEquals(vid_from_rset(req, None, self.schema), 'index') |
|
1654 | 29 |
|
0 | 30 |
def test_no_entity(self): |
31 |
req = self.request() |
|
32 |
rset = self.execute('Any X WHERE X login "blabla"') |
|
33 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'noresult') |
|
34 |
||
35 |
def test_one_entity(self): |
|
36 |
req = self.request() |
|
37 |
rset = self.execute('Any X WHERE X login "admin"') |
|
38 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary') |
|
39 |
rset = self.execute('Any X, L WHERE X login "admin", X login L') |
|
40 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary') |
|
41 |
req.search_state = ('pasnormal',) |
|
42 |
rset = self.execute('Any X WHERE X login "admin"') |
|
43 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'outofcontext-search') |
|
44 |
||
45 |
def test_one_entity_eid(self): |
|
46 |
req = self.request() |
|
47 |
rset = self.execute('Any X WHERE X eid 1') |
|
48 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary') |
|
1654 | 49 |
|
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
50 |
def test_more_than_one_entity_same_type(self): |
0 | 51 |
req = self.request() |
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
0
diff
changeset
|
52 |
rset = self.execute('Any X WHERE X is CWUser') |
4494
ccb7fce7297b
AdaptedList -> SameETypeList
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
53 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'sameetypelist') |
0 | 54 |
rset = self.execute('Any X, L WHERE X login L') |
4494
ccb7fce7297b
AdaptedList -> SameETypeList
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
55 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'sameetypelist') |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
56 |
|
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
57 |
def test_more_than_one_entity_diff_type(self): |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
58 |
req = self.request() |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
59 |
rset = self.execute('Any X WHERE X is IN (CWUser, CWGroup)') |
0 | 60 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'list') |
1654 | 61 |
|
0 | 62 |
def test_more_than_one_entity_by_row(self): |
63 |
req = self.request() |
|
64 |
rset = self.execute('Any X, G WHERE X in_group G') |
|
65 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') |
|
1654 | 66 |
|
0 | 67 |
def test_more_than_one_entity_by_row_2(self): |
68 |
req = self.request() |
|
69 |
rset = self.execute('Any X, GN WHERE X in_group G, G name GN') |
|
70 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') |
|
1654 | 71 |
|
0 | 72 |
def test_aggregat(self): |
73 |
req = self.request() |
|
74 |
rset = self.execute('Any X, COUNT(T) GROUPBY X WHERE X is T') |
|
75 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
0
diff
changeset
|
76 |
rset = self.execute('Any MAX(X) WHERE X is CWUser') |
0 | 77 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') |
78 |
||
79 |
def test_subquery(self): |
|
80 |
rset = self.execute( |
|
81 |
'DISTINCT Any X,N ORDERBY N ' |
|
82 |
'WITH X,N BEING (' |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
0
diff
changeset
|
83 |
' (DISTINCT Any P,N WHERE P is CWUser, P login N)' |
0 | 84 |
' UNION' |
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
0
diff
changeset
|
85 |
' (DISTINCT Any W,N WHERE W is CWGroup, W name N))') |
0 | 86 |
req = self.request() |
87 |
self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') |
|
88 |
||
89 |
||
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2650
diff
changeset
|
90 |
class TableViewTC(CubicWebTC): |
0 | 91 |
|
92 |
def _prepare_entity(self): |
|
4083
3b285889b8e9
3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3777
diff
changeset
|
93 |
req = self.request() |
3b285889b8e9
3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3777
diff
changeset
|
94 |
e = req.create_entity("State", name=u'<toto>', description=u'loo"ong blabla') |
3b285889b8e9
3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3777
diff
changeset
|
95 |
rset = req.execute('Any X, D, CD, NOW - CD WHERE X is State, X description D, X creation_date CD, X eid %(x)s', |
0 | 96 |
{'x': e.eid}, 'x') |
2650
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2637
diff
changeset
|
97 |
view = self.vreg['views'].select('table', req, rset=rset) |
0 | 98 |
return e, rset, view |
1654 | 99 |
|
0 | 100 |
def test_headers(self): |
101 |
self.skip('implement me') |
|
102 |
||
103 |
def test_sortvalue(self): |
|
104 |
e, _, view = self._prepare_entity() |
|
3771 | 105 |
expected = ['<toto>', 'loo"ong blabla'[:10], e.creation_date.strftime('%Y/%m/%d %H:%M:%S')] |
0 | 106 |
got = [loadjson(view.sortvalue(0, i)) for i in xrange(3)] |
107 |
self.assertListEqual(got, expected) |
|
108 |
# XXX sqlite does not handle Interval correctly |
|
109 |
# value = loadjson(view.sortvalue(0, 3)) |
|
110 |
# self.assertAlmostEquals(value, rset.rows[0][3].seconds) |
|
111 |
||
112 |
def test_sortvalue_with_display_col(self): |
|
113 |
e, rset, view = self._prepare_entity() |
|
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2381
diff
changeset
|
114 |
labels = view.columns_labels() |
0 | 115 |
table = TableWidget(view) |
2204
3472c5498478
use column_labels instead of rqlst.get_description
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
116 |
table.columns = view.get_columns(labels, [1, 2], None, None, None, None, 0) |
3771 | 117 |
expected = ['loo"ong blabla'[:10], e.creation_date.strftime('%Y/%m/%d %H:%M:%S')] |
0 | 118 |
got = [loadjson(value) for _, value in table.itercols(0)] |
119 |
self.assertListEqual(got, expected) |
|
120 |
||
121 |
||
122 |
if __name__ == '__main__': |
|
123 |
unittest_main() |