web/test/test_views.py
author Julien Cristau <julien.cristau@logilab.fr>
Mon, 28 Apr 2014 11:20:26 +0200
changeset 9708 b36bc18f6ef7
parent 8961 cc1a0aad580c
child 9836 71045bb09136
permissions -rw-r--r--
[migration] move 'entities' table changes from 3.19.0 to bootstrap script The 'mtime' and 'source' columns need to go away before we attempt to do anything else with the repo, otherwise any addition of an entity is going to explode.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8941
7b26fe71404f drop xhtml content-type support (closes #2065651)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7992
diff changeset
     1
# copyright 2003-2013 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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
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: 4491
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
5768
1e73a466aa69 [fti] support for fti ranking: has_text query results sorted by relevance, and provides a way to control weight per entity / entity's attribute
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5424
diff changeset
    18
"""automatic tests"""
8941
7b26fe71404f drop xhtml content-type support (closes #2065651)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7992
diff changeset
    19
from cubicweb.devtools import htmlparser
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2657
diff changeset
    20
from cubicweb.devtools.testlib import CubicWebTC, AutoPopulateTest, AutomaticWebTest
1016
26387b836099 use datetime instead of mx.DateTime
sylvain.thenault@logilab.fr
parents: 824
diff changeset
    21
from cubicweb.view import AnyRsetView
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    22
7007
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    23
class AutomaticWebTest(AutomaticWebTest):
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    24
    application_rql = [
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    25
        'Any L,F WHERE E is CWUser, E login L, E firstname F',
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    26
        'Any L,F,E WHERE E is CWUser, E login L, E firstname F',
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    27
        'Any COUNT(X) WHERE X is CWUser',
3804794b1ccd [web test] ensure we're using proper instance home
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6639
diff changeset
    28
        ]
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    29
8961
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    30
    def to_test_etypes(self):
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    31
        # We do not really want to test cube views here. So we can drop testing 
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    32
        # some EntityType. The two Blog types below require the sioc cube that 
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    33
        # we do not want to add as a dependency.
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    34
        etypes = super(AutomaticWebTest, self).to_test_etypes()
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    35
        etypes -= set(('Blog', 'BlogEntry'))
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    36
        return etypes
cc1a0aad580c [test/view] exclude some Blog entity from automatic view testing
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8941
diff changeset
    37
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    38
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    39
class SomeView(AnyRsetView):
3408
c92170fca813 [api] use __regid__ instead of deprecated id
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2773
diff changeset
    40
    __regid__ = 'someview'
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1398
diff changeset
    41
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    42
    def call(self):
3474
020fc867f7b2 [api] use _cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3408
diff changeset
    43
        self._cw.add_js('spam.js')
020fc867f7b2 [api] use _cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3408
diff changeset
    44
        self._cw.add_js('spam.js')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    45
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    46
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2657
diff changeset
    47
class ManualCubicWebTCs(AutoPopulateTest):
6639
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    48
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    49
    def test_regr_copy_view(self):
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    50
        """regression test: make sure we can ask a copy of a
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    51
        composite entity
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    52
        """
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    53
        rset = self.execute('CWUser X WHERE X login "admin"')
90ae7eb3460f [test] cleanup: don't need expensive auto_populate(), use a single test class
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    54
        self.view('copy', rset)
0
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
    def test_sortable_js_added(self):
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1368
diff changeset
    57
        rset = self.execute('CWUser X')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    58
        # sortable.js should not be included by default
7791
31bb51ea5485 [deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7007
diff changeset
    59
        self.assertFalse('jquery.tablesorter.js' in self.view('oneline', rset))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    60
        # but should be included by the tableview
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1368
diff changeset
    61
        rset = self.execute('Any P,F,S LIMIT 1 WHERE P is CWUser, P firstname F, P surname S')
8941
7b26fe71404f drop xhtml content-type support (closes #2065651)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7992
diff changeset
    62
        self.assertIn('jquery.tablesorter.js', self.view('table', rset).source)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    63
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    64
    def test_js_added_only_once(self):
1368
c0138f349ff4 fix test
sylvain.thenault@logilab.fr
parents: 1087
diff changeset
    65
        self.vreg._loadedmods[__name__] = {}
4491
a0f48c31b58a kill register_appobject_class method, simplifying autoregistration. Update test accordingly (test which manually registers object should also properly call there __register__ method). Drop the disable-appobjects config file entry: no one used it since its introduction years ago.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    66
        self.vreg.register(SomeView)
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1368
diff changeset
    67
        rset = self.execute('CWUser X')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    68
        source = self.view('someview', rset).source
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5768
diff changeset
    69
        self.assertEqual(source.count('spam.js'), 1)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    70
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    71
    def test_unrelateddivs(self):
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1368
diff changeset
    72
        rset = self.execute('Any X WHERE X is CWUser, X login "admin"')
4087
2b8bc4cfd6ee api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3474
diff changeset
    73
        group = self.request().create_entity('CWGroup', name=u'R&D')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    74
        req = self.request(relation='in_group_subject')
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    75
        self.view('unrelateddivs', rset, req)
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1398
diff changeset
    76
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    77
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    78
if __name__ == '__main__':
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    79
    from logilab.common.testlib import unittest_main
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    80
    unittest_main()