cubicweb/web/test/unittest_breadcrumbs.py
author Laura Médioni <laura.medioni@logilab.fr>, Denis Laxalde <denis.laxalde@logilab.fr>
Thu, 03 Nov 2016 15:00:01 +0100
changeset 11794 d8830e2bd2e0
parent 11057 0b59724cb3f2
permissions -rw-r--r--
[req,web] Make it possible to handle page language from URL prefix Adding a short language prefix to URL (like "/en" or "/fr") changes the language the pages are displayed in. This prefix is kept during navigation. This way it is not necessary to do language negotiation, nor to use user preferences to determine which language to apply. This behavior is controlled through a new configuration option "language-mode", which replaces "language-negociation" option and which values may be "http-negotiation", "url-prefix" or "" (to disable language setting and force using "ui.language" property). Migration from previous option is not handled because I could not manage to have it working (users will get prompted with the configuration file diff anyways). Add some tests checking various scenarios. Closes #15743487
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9843
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
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: 5291
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
5569
cb14af012a96 [adapters] refactoring fixes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5424
diff changeset
    18
3460
e4843535db25 [api] some more _cw / __regid__, automatic tests now pass again
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3227
diff changeset
    19
from cubicweb.devtools.testlib import CubicWebTC
3179
0684544f6d0d from 3.5 branch; XXX the test depends on an eid value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    20
5569
cb14af012a96 [adapters] refactoring fixes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5424
diff changeset
    21
3460
e4843535db25 [api] some more _cw / __regid__, automatic tests now pass again
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3227
diff changeset
    22
class BreadCrumbsTC(CubicWebTC):
3179
0684544f6d0d from 3.5 branch; XXX the test depends on an eid value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    23
0684544f6d0d from 3.5 branch; XXX the test depends on an eid value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    24
    def test_base(self):
9643
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    25
        with self.admin_access.web_request() as req:
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    26
            f1 = req.create_entity('Folder', name=u'par&ent')
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    27
            f2 = req.create_entity('Folder', name=u'chi&ld')
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    28
            req.cnx.execute('SET F2 filed_under F1 WHERE F1 eid %(f1)s, F2 eid %(f2)s',
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    29
                            {'f1' : f1.eid, 'f2' : f2.eid})
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    30
            req.cnx.commit()
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    31
            self.assertEqual(f2.view('breadcrumbs'),
9843
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    32
                             '<a href="http://testing.fr/cubicweb/folder/%s" title="">'
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    33
                             'chi&amp;ld</a>' % f2.eid)
9643
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    34
            childrset = f2.as_rset()
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    35
            ibc = self.vreg['ctxcomponents'].select('breadcrumbs', req, rset=childrset)
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    36
            l = []
421604863753 [web/test] port unittest_breadcrumbs to 3.19 test api
Julien Cristau <julien.cristau@logilab.fr>
parents: 7980
diff changeset
    37
            ibc.render(l.append)
9843
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    38
            self.assertMultiLineEqual('<span id="breadcrumbs" class="pathbar">&#160;&gt;&#160;'
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    39
                                      '<a href="http://testing.fr/cubicweb/Folder">Folder_plural</a>'
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    40
                                      '&#160;&gt;&#160;<a href="http://testing.fr/cubicweb/folder/%s" '
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    41
                                      'title="">par&amp;ent</a>&#160;&gt;&#160;\n'
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    42
                                      '<a href="http://testing.fr/cubicweb/folder/%s" title="">'
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    43
                                      'chi&amp;ld</a></span>' % (f1.eid, f2.eid),
888a8b406124 [webtests/breadcrumbs] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9643
diff changeset
    44
                                      ''.join(l))
4172
4d4cef034eec all web tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3460
diff changeset
    45
4d4cef034eec all web tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3460
diff changeset
    46
if __name__ == '__main__':
4d4cef034eec all web tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3460
diff changeset
    47
    from logilab.common.testlib import unittest_main
4d4cef034eec all web tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3460
diff changeset
    48
    unittest_main()