entities/test/unittest_base.py
author Julien Cristau <julien.cristau@logilab.fr>
Mon, 09 Nov 2015 15:29:07 +0100
changeset 10871 1d4a94d04ec6
parent 10847 ce5403611cbe
child 10973 0939ad2edf63
permissions -rw-r--r--
[dataimport] remove replace_sep parameter from massive store It is unused since changeset efbbf1e93a04 "[dataimport] Properly escape strings sent to COPY FROM"
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
     2
# 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: 4491
diff changeset
     3
# 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
     4
#
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
# 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
     6
#
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
# 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
     8
# 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
     9
# 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
    10
# 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
    11
#
5424
8ecbcbff9777 replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5421
diff changeset
    12
# 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
    13
# 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
    14
# 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
    15
# 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
    16
#
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
# 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
    18
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1642
diff changeset
    19
"""unit tests for cubicweb.entities.base module
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1642
diff changeset
    20
"""
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    22
from logilab.common.testlib import unittest_main
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    23
from logilab.common.decorators import clear_cache
10847
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    24
from logilab.common.registry import yes
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    25
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2660
diff changeset
    26
from cubicweb.devtools.testlib import CubicWebTC
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    27
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    28
from cubicweb.entities import AnyEntity
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    29
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    30
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2660
diff changeset
    31
class BaseEntityTC(CubicWebTC):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    32
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    33
    def setup_database(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    34
        with self.admin_access.repo_cnx() as cnx:
9859
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    35
            self.membereid = self.create_user(cnx, 'member').eid
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    36
            cnx.commit()
1642
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    37
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    38
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    39
class MetadataTC(BaseEntityTC):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    40
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    41
    def test_creator(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    42
        with self.new_access('member').repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    43
            entity = cnx.create_entity('Bookmark', title=u"hello", path=u'project/cubicweb')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    44
            cnx.commit()
9859
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    45
            self.assertEqual(entity.creator.eid, self.membereid)
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    46
            self.assertEqual(entity.dc_creator(), u'member')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    47
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    48
    def test_type(self):
8899
c7a95ebcc093 [entity] add an official ``cw_etype`` property for entity
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8694
diff changeset
    49
        #dc_type may be translated
9859
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    50
        with self.admin_access.client_cnx() as cnx:
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    51
            member = cnx.entity_from_eid(self.membereid)
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    52
            self.assertEqual(member.dc_type(), 'CWUser')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    53
8899
c7a95ebcc093 [entity] add an official ``cw_etype`` property for entity
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8694
diff changeset
    54
    def test_cw_etype(self):
c7a95ebcc093 [entity] add an official ``cw_etype`` property for entity
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8694
diff changeset
    55
        #cw_etype is never translated
9859
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    56
        with self.admin_access.client_cnx() as cnx:
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    57
            member = cnx.entity_from_eid(self.membereid)
fc978ff7f381 [entitiestests/base] don't store an entity on the test case
Julien Cristau <julien.cristau@logilab.fr>
parents: 9858
diff changeset
    58
            self.assertEqual(member.cw_etype, 'CWUser')
8899
c7a95ebcc093 [entity] add an official ``cw_etype`` property for entity
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8694
diff changeset
    59
1102
054dfee29bfc some test for meta attributes (XXX should be in yams)
sylvain.thenault@logilab.fr
parents: 1016
diff changeset
    60
    def test_entity_meta_attributes(self):
054dfee29bfc some test for meta attributes (XXX should be in yams)
sylvain.thenault@logilab.fr
parents: 1016
diff changeset
    61
        # XXX move to yams
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5578
diff changeset
    62
        self.assertEqual(self.schema['CWUser'].meta_attributes(), {})
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    63
        self.assertEqual(dict((str(k), v)
10662
10942ed172de [py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents: 10411
diff changeset
    64
                              for k, v in self.schema['State'].meta_attributes().items()),
1642
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    65
                          {'description_format': ('format', 'description')})
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    66
8450
11063635c4e4 [fti] allow usage of custom RQL to fetch entities to index (closes #2410509)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7980
diff changeset
    67
    def test_fti_rql_method(self):
10847
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    68
        class EmailAddress(AnyEntity):
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    69
            __regid__ = 'EmailAddress'
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    70
            __select__ = AnyEntity.__select__ & yes(2)
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    71
            @classmethod
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    72
            def cw_fti_index_rql_queries(cls, req):
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    73
                return ['EmailAddress Y']
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    74
        with self.admin_access.web_request() as req:
10847
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    75
            req.create_entity('EmailAddress', address=u'foo@bar.com')
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    76
            eclass = self.vreg['etypes'].etype_class('EmailAddress')
10847
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    77
            # deprecated
10251
2daa5c6dea4d [entities] make cw_fti_index_rql_queries predictable
Julien Cristau <julien.cristau@logilab.fr>
parents: 9859
diff changeset
    78
            self.assertEqual(['Any X, ADDRESS, ALIAS WHERE X is EmailAddress, '
2daa5c6dea4d [entities] make cw_fti_index_rql_queries predictable
Julien Cristau <julien.cristau@logilab.fr>
parents: 9859
diff changeset
    79
                              'X address ADDRESS, X alias ALIAS'],
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    80
                             eclass.cw_fti_index_rql_queries(req))
8450
11063635c4e4 [fti] allow usage of custom RQL to fetch entities to index (closes #2410509)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7980
diff changeset
    81
10847
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    82
            self.assertEqual(['Any X, ADDRESS, ALIAS ORDERBY X LIMIT 1000 WHERE X is EmailAddress, '
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    83
                              'X address ADDRESS, X alias ALIAS, X eid > 0'],
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    84
                             [rset.rql for rset in eclass.cw_fti_index_rql_limit(req)])
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    85
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    86
            # test backwards compatibility with custom method
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    87
            with self.temporary_appobjects(EmailAddress):
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    88
                self.vreg['etypes'].clear_caches()
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    89
                eclass = self.vreg['etypes'].etype_class('EmailAddress')
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    90
                self.assertEqual(['EmailAddress Y'],
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    91
                                 [rset.rql for rset in eclass.cw_fti_index_rql_limit(req)])
ce5403611cbe [fti] add cw_fti_index_rql_limit method
Julien Cristau <julien.cristau@logilab.fr>
parents: 10662
diff changeset
    92
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    93
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    94
class EmailAddressTC(BaseEntityTC):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    95
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    96
    def test_canonical_form(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    97
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    98
            email1 = cnx.execute('INSERT EmailAddress X: '
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
    99
                                 'X address "maarten.ter.huurne@philips.com"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   100
            email2 = cnx.execute('INSERT EmailAddress X: '
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   101
                                 'X address "maarten@philips.com"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   102
            email3 = cnx.execute('INSERT EmailAddress X: '
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   103
                                 'X address "toto@logilab.fr"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   104
            email1.cw_set(prefered_form=email2)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   105
            self.assertEqual(email1.prefered.eid, email2.eid)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   106
            self.assertEqual(email2.prefered.eid, email2.eid)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   107
            self.assertEqual(email3.prefered.eid, email3.eid)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   108
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   109
    def test_mangling(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   110
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   111
            email = cnx.execute('INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   112
            self.assertEqual(email.display_address(), 'maarten.ter.huurne@philips.com')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   113
            self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne@philips.com')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   114
            self.vreg.config.global_set_option('mangle-emails', True)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   115
            try:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   116
                self.assertEqual(email.display_address(), 'maarten.ter.huurne at philips dot com')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   117
                self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne at philips dot com')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   118
                email = cnx.execute('INSERT EmailAddress X: X address "syt"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   119
                self.assertEqual(email.display_address(), 'syt')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   120
                self.assertEqual(email.printable_value('address'), 'syt')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   121
            finally:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   122
                self.vreg.config.global_set_option('mangle-emails', False)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   123
9211
d45d66d94baa [entities] properly escape in EmailAddress.printable_value when format is html. Closes #3064025
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8930
diff changeset
   124
    def test_printable_value_escape(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   125
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   126
            email = cnx.execute('INSERT EmailAddress X: '
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   127
                                'X address "maarten&ter@philips.com"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   128
            self.assertEqual(email.printable_value('address'),
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   129
                             'maarten&amp;ter@philips.com')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   130
            self.assertEqual(email.printable_value('address', format='text/plain'),
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   131
                             'maarten&ter@philips.com')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   132
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1358
diff changeset
   133
class CWUserTC(BaseEntityTC):
1642
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   134
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   135
    def test_complete(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   136
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   137
            e = cnx.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   138
            e.complete()
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   139
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   140
    def test_matching_groups(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   141
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   142
            e = cnx.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   143
            self.assertTrue(e.matching_groups('managers'))
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   144
            self.assertFalse(e.matching_groups('xyz'))
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   145
            self.assertTrue(e.matching_groups(('xyz', 'managers')))
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   146
            self.assertFalse(e.matching_groups(('xyz', 'abcd')))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   147
3830
3b6bbb3a3c3e close #472361: omit password and bytes attributes in allowed mass-mailing keys
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3316
diff changeset
   148
    def test_dc_title_and_name(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   149
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   150
            e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   151
            self.assertEqual(e.dc_title(), 'member')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   152
            self.assertEqual(e.name(), 'member')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   153
            e.cw_set(firstname=u'bouah')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   154
            self.assertEqual(e.dc_title(), 'member')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   155
            self.assertEqual(e.name(), u'bouah')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   156
            e.cw_set(surname=u'lôt')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   157
            self.assertEqual(e.dc_title(), 'member')
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   158
            self.assertEqual(e.name(), u'bouah lôt')
3830
3b6bbb3a3c3e close #472361: omit password and bytes attributes in allowed mass-mailing keys
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3316
diff changeset
   159
10396
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   160
    def test_falsey_dc_title(self):
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   161
        with self.admin_access.repo_cnx() as cnx:
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   162
            e = cnx.create_entity('Company', order=0, name=u'pythonian')
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   163
            cnx.commit()
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   164
            self.assertEqual(u'0', e.dc_title())
33e44293b0eb [entities] fix dc_title output for bool(value) == False
Aurelien Campeas <aurelien.campeas@pythonian.fr>
parents: 9859
diff changeset
   165
3830
3b6bbb3a3c3e close #472361: omit password and bytes attributes in allowed mass-mailing keys
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3316
diff changeset
   166
    def test_allowed_massmail_keys(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   167
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   168
            e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
10402
e3c20f4d1a7c [test] typo in entities test comment
Rémi Cardona <remi.cardona@logilab.fr>
parents: 10396
diff changeset
   169
            # Bytes/Password attributes should be omitted
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   170
            self.assertEqual(e.cw_adapt_to('IEmailable').allowed_massmail_keys(),
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   171
                              set(('surname', 'firstname', 'login', 'last_login_time',
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   172
                                   'creation_date', 'modification_date', 'cwuri', 'eid'))
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   173
                              )
3830
3b6bbb3a3c3e close #472361: omit password and bytes attributes in allowed mass-mailing keys
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3316
diff changeset
   174
7212
040d3597444f [entities/test] add failing test for cw_instantiate
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6340
diff changeset
   175
    def test_cw_instantiate_object_relation(self):
040d3597444f [entities/test] add failing test for cw_instantiate
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6340
diff changeset
   176
        """ a weird non regression test """
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   177
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   178
            e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   179
            cnx.create_entity('CWGroup', name=u'logilab', reverse_in_group=e)
7212
040d3597444f [entities/test] add failing test for cw_instantiate
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6340
diff changeset
   180
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   181
9432
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   182
class HTMLtransformTC(BaseEntityTC):
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   183
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   184
    def test_sanitized_html(self):
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   185
        with self.admin_access.repo_cnx() as cnx:
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   186
            c = cnx.create_entity('Company', name=u'Babar',
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   187
                                  description=u"""
9432
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   188
Title
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   189
=====
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   190
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   191
Elephant management best practices.
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   192
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   193
.. raw:: html
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   194
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   195
   <script>alert("coucou")</script>
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   196
""", description_format=u'text/rest')
9858
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   197
            cnx.commit()
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   198
            c.cw_clear_all_caches()
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   199
            self.assertIn('alert',
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   200
                          c.printable_value('description', format='text/plain'))
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   201
            self.assertNotIn('alert',
4266e13fd5c1 [entitiestests/base] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9440
diff changeset
   202
                             c.printable_value('description', format='text/html'))
9432
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   203
030745ac9873 [entities] unconditionnally sanitize the html output of printable_value
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9211
diff changeset
   204
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2660
diff changeset
   205
class SpecializedEntityClassesTC(CubicWebTC):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   206
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   207
    def select_eclass(self, etype):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   208
        # clear selector cache
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: 1977
diff changeset
   209
        clear_cache(self.vreg['etypes'], 'etype_class')
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: 1977
diff changeset
   210
        return self.vreg['etypes'].etype_class(etype)
1642
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   211
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   212
    def test_etype_class_selection_and_specialization(self):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   213
        # no specific class for Subdivisions, the default one should be selected
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   214
        eclass = self.select_eclass('SubDivision')
7791
31bb51ea5485 [deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7244
diff changeset
   215
        self.assertTrue(eclass.__autogenerated__)
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5578
diff changeset
   216
        #self.assertEqual(eclass.__bases__, (AnyEntity,))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   217
        # build class from most generic to most specific and make
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   218
        # sure the most specific is always selected
1358
a7438eb2420c test update
sylvain.thenault@logilab.fr
parents: 1102
diff changeset
   219
        self.vreg._loadedmods[__name__] = {}
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   220
        for etype in ('Company', 'Division', 'SubDivision'):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   221
            class Foo(AnyEntity):
3450
265331a0920c use __regid__
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3369
diff changeset
   222
                __regid__ = etype
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
   223
            self.vreg.register(Foo)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   224
            eclass = self.select_eclass('SubDivision')
7791
31bb51ea5485 [deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7244
diff changeset
   225
            self.assertTrue(eclass.__autogenerated__)
31bb51ea5485 [deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7244
diff changeset
   226
            self.assertFalse(eclass is Foo)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   227
            if etype == 'SubDivision':
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5578
diff changeset
   228
                self.assertEqual(eclass.__bases__, (Foo,))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   229
            else:
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5578
diff changeset
   230
                self.assertEqual(eclass.__bases__[0].__bases__, (Foo,))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   231
        # check Division eclass is still selected for plain Division entities
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   232
        eclass = self.select_eclass('Division')
8899
c7a95ebcc093 [entity] add an official ``cw_etype`` property for entity
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8694
diff changeset
   233
        self.assertEqual(eclass.cw_etype, 'Division')
1642
12a98b17fb05 fix tests
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   234
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   235
if __name__ == '__main__':
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   236
    unittest_main()