cubicweb/ext/test/unittest_rest.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Fri, 05 Apr 2019 17:58:19 +0200
changeset 12567 26744ad37953
parent 12489 79fce4bde06f
permissions -rw-r--r--
Drop python2 support This mostly consists in removing the dependency on "six" and updating the code to use only Python3 idioms. Notice that we previously used TemporaryDirectory from cubicweb.devtools.testlib for compatibility with Python2. We now directly import it from tempfile.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
     1
# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     2
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     3
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     4
# This file is part of CubicWeb.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     5
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     6
# CubicWeb is free software: you can redistribute it and/or modify it under the
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     7
# terms of the GNU Lesser General Public License as published by the Free
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     8
# Software Foundation, either version 2.1 of the License, or (at your option)
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
     9
# any later version.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    10
#
5424
8ecbcbff9777 replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5421
diff changeset
    11
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    13
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    14
# details.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    15
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    16
# You should have received a copy of the GNU Lesser General Public License along
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
10754
03aa9f2a4ecb [ext/test] fix test relying on repr(text)
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    18
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
from logilab.common.testlib import unittest_main
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    20
from cubicweb.devtools.testlib import CubicWebTC
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
1643
59c5cec05bbd move card role to cubes.card
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    22
from cubicweb.ext.rest import rest_publish
59c5cec05bbd move card role to cubes.card
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    23
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    24
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    25
class RestTC(CubicWebTC):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    26
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    27
    def context(self, req):
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    28
        return req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
1643
59c5cec05bbd move card role to cubes.card
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    29
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    30
    def test_eid_role(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    31
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    32
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    33
            self.assertEqual(rest_publish(context, ':eid:`%s`' % context.eid),
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    34
                             '<p><a class="reference"'
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    35
                             ' href="http://testing.fr/cubicweb/cwuser/admin">'
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    36
                             '#%s</a></p>\n' % context.eid)
10953
8b8193046600 [rest] a bit of pep8
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 10952
diff changeset
    37
            self.assertEqual(rest_publish(context, ':eid:`%s:some text`' % context.eid),
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    38
                             '<p><a class="reference"'
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    39
                             ' href="http://testing.fr/cubicweb/cwuser/admin">'
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    40
                             'some text</a></p>\n')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    41
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    42
    def test_bad_rest_no_crash(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    43
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    44
            rest_publish(self.context(req), '''
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    45
| card | implication     |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    46
--------------------------
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    47
| 1-1  | N1 = N2         |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    48
| 1-?  | N1 <= N2        |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    49
| 1-+  | N1 >= N2        |
1643
59c5cec05bbd move card role to cubes.card
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    50
| 1-*  | N1>0 => N2>0    |
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    51
--------------------------
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    52
| ?-?  | N1 # N2         |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    53
| ?-+  | N1 >= N2        |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    54
| ?-*  | N1 #  N2        |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    55
--------------------------
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    56
| +-+  | N1>0 => N2>0 et |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    57
|      | N2>0 => N1>0    |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    58
| +-*  | N1>+ => N2>0    |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    59
--------------------------
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    60
| *-*  | N1#N2           |
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    61
--------------------------
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    62
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    63
''')
1643
59c5cec05bbd move card role to cubes.card
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    64
10952
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    65
    def test_disable_field_name_colspan(self):
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    66
        with self.admin_access.web_request() as req:
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    67
            context = self.context(req)
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    68
            value = rest_publish(context, '''my field list:
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    69
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    70
:a long dumb param name: value
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    71
''')
4f28cb25b6c1 [rest] avoid field on two lines if name is above some size limit. Closes #8961835
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9856
diff changeset
    72
            self.assertNotIn('colspan', value)
6938
6c1a960735f5 add a rql directive to restructuredtext
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    73
6c1a960735f5 add a rql directive to restructuredtext
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    74
    def test_rql_role_with_vid(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    75
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    76
            context = self.context(req)
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    77
            out = rest_publish(context,
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
    78
                               ':rql:`Any X ORDERBY XL WHERE X is CWUser, X login XL:table`')
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    79
            self.assertTrue(out.endswith('<a href="http://testing.fr/cubicweb/cwuser/anon" '
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    80
                                         'title="">anon</a></td></tr>\n</tbody></table>'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    81
                                         '</div></p>\n'))
6938
6c1a960735f5 add a rql directive to restructuredtext
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    82
7732
5430d0db52ab [web] rql directive breaks if explicit vid and empty rset (closes #1893433)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6938
diff changeset
    83
    def test_rql_role_with_vid_empty_rset(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    84
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    85
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    86
            out = rest_publish(context, ':rql:`Any X WHERE X is CWUser, X login "nono":table`')
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    87
            self.assertTrue(out.endswith('<p><div class="searchMessage"><strong>'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    88
                                         'No result matching query</strong></div>\n</p>\n'))
7732
5430d0db52ab [web] rql directive breaks if explicit vid and empty rset (closes #1893433)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6938
diff changeset
    89
5430d0db52ab [web] rql directive breaks if explicit vid and empty rset (closes #1893433)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6938
diff changeset
    90
    def test_rql_role_with_unknown_vid(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    91
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    92
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    93
            out = rest_publish(context, ':rql:`Any X WHERE X is CWUser:toto`')
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    94
            self.assertTrue(out.startswith("<p>an error occurred while interpreting this "
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12489
diff changeset
    95
                                           "rql directive: ObjectNotFound('toto'"),
10754
03aa9f2a4ecb [ext/test] fix test relying on repr(text)
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    96
                            out)
7732
5430d0db52ab [web] rql directive breaks if explicit vid and empty rset (closes #1893433)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6938
diff changeset
    97
6938
6c1a960735f5 add a rql directive to restructuredtext
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    98
    def test_rql_role_without_vid(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
    99
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   100
            context = self.context(req)
11357
ef53a59140e1 [test] Fix randomness in tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11057
diff changeset
   101
            out = rest_publish(context, ':rql:`Any X,XL ORDERBY XL WHERE X is CWUser, X login XL`')
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   102
            self.assertEqual(out, u'<p><h1>CWUser_plural</h1><div class="section">'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   103
                             '<a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a>'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   104
                             '</div><div class="section">'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   105
                             '<a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a>'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   106
                             '</div></p>\n')
6938
6c1a960735f5 add a rql directive to restructuredtext
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
   107
8852
59a29405688c [ext/rest] add directive bookmark to rest (closes #2545595)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 8255
diff changeset
   108
    def test_bookmark_role(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   109
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   110
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   111
            rset = req.execute('INSERT Bookmark X: X title "hello", X path '
11357
ef53a59140e1 [test] Fix randomness in tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11057
diff changeset
   112
                               '"/view?rql=Any X,XL ORDERBY XL WHERE X is CWUser, X login XL"')
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   113
            eid = rset[0][0]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   114
            out = rest_publish(context, ':bookmark:`%s`' % eid)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   115
            self.assertEqual(out, u'<p><h1>CWUser_plural</h1><div class="section">'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   116
                             '<a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   117
                             '</a></div><div class="section">'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   118
                             '<a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   119
                             '</a></div></p>\n')
8852
59a29405688c [ext/rest] add directive bookmark to rest (closes #2545595)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 8255
diff changeset
   120
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   121
    def test_rqltable_nocontent(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   122
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   123
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   124
            out = rest_publish(context, """.. rql-table::""")
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   125
            self.assertIn("System Message: ERROR", out)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   126
            self.assertIn("Content block expected for the &quot;rql-table&quot; "
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   127
                          "directive; none found", out)
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   128
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   129
    def test_rqltable_norset(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   130
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   131
            context = self.context(req)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   132
            rql = "Any X WHERE X is CWUser, X firstname 'franky'"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   133
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   134
                context, """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   135
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   136
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   137
                %(rql)s""" % {'rql': rql})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   138
            self.assertIn("System Message: WARNING", out)
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   139
            self.assertIn("empty result set", out)
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   140
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   141
    def test_rqltable_nooptions(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   142
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   143
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   144
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   145
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   146
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   147
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   148
   %(rql)s
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   149
                """ % {'rql': rql})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   150
            view = self.vreg['views'].select('table', req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   151
            self.assertEqual(view.render(w=None)[49:], out[49:])
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   152
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   153
    def test_rqltable_vid(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   154
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   155
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   156
            vid = 'mytable'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   157
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   158
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   159
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   160
   :vid: %(vid)s
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   161
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   162
   %(rql)s
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   163
                """ % {'rql': rql, 'vid': vid})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   164
            view = self.vreg['views'].select(vid, req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   165
            self.assertEqual(view.render(w=None)[49:], out[49:])
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   166
            self.assertIn(vid, out[:49])
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   167
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   168
    def test_rqltable_badvid(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   169
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   170
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   171
            vid = 'mytabel'
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   172
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   173
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   174
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   175
   :vid: %(vid)s
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   176
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   177
   %(rql)s
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   178
                """ % {'rql': rql, 'vid': vid})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   179
            self.assertIn("fail to select '%s' view" % vid, out)
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   180
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   181
    def test_rqltable_headers(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   182
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   183
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   184
            headers = ["nom", "prenom", "identifiant"]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   185
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   186
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   187
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   188
   :headers: %(headers)s
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   189
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   190
   %(rql)s
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   191
                """ % {'rql': rql, 'headers': ', '.join(headers)})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   192
            view = self.vreg['views'].select('table', req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   193
            view.headers = headers
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   194
            self.assertEqual(view.render(w=None)[49:], out[49:])
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   195
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   196
    def test_rqltable_headers_missing(self):
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   197
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   198
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   199
            headers = ["nom", "", "identifiant"]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   200
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   201
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   202
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   203
   :headers: %(headers)s
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   204
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   205
   %(rql)s
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   206
                """ % {'rql': rql, 'headers': ', '.join(headers)})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   207
            view = self.vreg['views'].select('table', req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   208
            view.headers = [headers[0], None, headers[2]]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   209
            self.assertEqual(view.render(w=None)[49:], out[49:])
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   210
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   211
    def test_rqltable_headers_missing_edges(self):
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   212
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   213
            rql = "Any S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   214
            headers = [" ", "prenom", ""]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   215
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   216
                self.context(req), """\
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   217
.. rql-table::
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   218
   :headers: %(headers)s
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   219
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   220
   %(rql)s
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   221
                """ % {'rql': rql, 'headers': ', '.join(headers)})
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   222
            view = self.vreg['views'].select('table', req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   223
            view.headers = [None, headers[1], None]
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   224
            self.assertEqual(view.render(w=None)[49:], out[49:])
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   225
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   226
    def test_rqltable_colvids(self):
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   227
        with self.admin_access.web_request() as req:
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   228
            rql = "Any X,S,F,L WHERE X is CWUser, X surname S, X firstname F, X login L"
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   229
            colvids = {0: "oneline"}
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   230
            out = rest_publish(
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   231
                self.context(req), """\
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   232
.. rql-table::
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   233
   :colvids: %(colvids)s
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   234
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   235
   %(rql)s
12489
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   236
                """
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   237
                % {'rql': rql,
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   238
                   'colvids': ', '.join(["%d=%s" % (k, v)
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   239
                                         for k, v in colvids.items()])}
79fce4bde06f [flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12488
diff changeset
   240
            )
9856
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   241
            view = self.vreg['views'].select('table', req, rset=req.execute(rql))
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   242
            view.cellvids = colvids
156a3fb4a884 [exttests/rest] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9517
diff changeset
   243
            self.assertEqual(view.render(w=None)[49:], out[49:])
9322
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   244
2dae5bf5ea68 [ReST] Implement a rql-table reST directive. Closes #3252856
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 8852
diff changeset
   245
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   246
if __name__ == '__main__':
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   247
    unittest_main()