server/test/unittest_schemaserial.py
author Aurelien Campeas <aurelien.campeas@logilab.fr>
Tue, 27 May 2014 18:47:24 +0200
changeset 10087 ed0b076c119b
parent 9990 c84ad981fc4a
child 10213 e53cc2182cf8
permissions -rw-r--r--
[rset] kill the rset._rqlst cache Right now it "works" for the standard, internal uses. However when we will fold ClientConnection and Connection, it will hurt, because suddenly we get more cache hits, and the following situation would become commonplace: * there is an un-annotated _rqlst given by the querier * some view (e.g. facets) requests the .syntax_tree, which takes a copy of _rqlst * the view actually expects the rql syntax tree to be annotated, but it was not, hence we crash. Related to #3837233.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
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: 4793
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
6632
78878f5a8166 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6631
diff changeset
    18
"""unit tests for schema rql (de)serialization"""
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    20
import sys
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
from cStringIO import StringIO
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    22
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    23
from logilab.common.testlib import TestCase, unittest_main
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    24
9299
c5eed908117d [schema] store default attribute values in a Bytes field, allowing python objects as default values
Aurélien Campeas <aurelien.campeas@logilab.fr>
parents: 9141
diff changeset
    25
from cubicweb import Binary
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    26
from cubicweb.schema import CubicWebSchemaLoader
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    27
from cubicweb.devtools import TestServerConfiguration
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
    28
from cubicweb.devtools.testlib import CubicWebTC
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    29
9796
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    30
from cubicweb.server.schemaserial import (updateeschema2rql, updaterschema2rql, rschema2rql,
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    31
                                          eschema2rql, rdef2rql, specialize2rql,
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    32
                                          _erperms2rql as erperms2rql)
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    33
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    34
from logilab.database import get_db_helper
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    35
from yams import register_base_type, unregister_base_type
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    36
9140
e7ffe39d4b1a [test] make unittest_schemaserial.py runnable with python
David Douard <david.douard@logilab.fr>
parents: 9128
diff changeset
    37
schema = config = None
6781
5062d86d6ffe [unittest2] use unittest2 module fixture api
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6632
diff changeset
    38
def setUpModule(*args):
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    39
    register_base_type('BabarTestType', ('jungle_speed',))
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    40
    helper = get_db_helper('sqlite')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    41
    helper.TYPE_MAPPING['BabarTestType'] = 'TEXT'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    42
    helper.TYPE_CONVERTERS['BabarTestType'] = lambda x: '"%s"' % x
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    43
6631
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    44
    global schema, config
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    45
    loader = CubicWebSchemaLoader()
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    46
    apphome = Schema2RQLTC.datadir + '-schemaserial'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    47
    config = TestServerConfiguration('data', apphome=apphome)
6631
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    48
    config.bootstrap_cubes()
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    49
    schema = loader.load(config)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    50
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    51
6781
5062d86d6ffe [unittest2] use unittest2 module fixture api
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6632
diff changeset
    52
def tearDownModule(*args):
6631
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    53
    global schema, config
9140
e7ffe39d4b1a [test] make unittest_schemaserial.py runnable with python
David Douard <david.douard@logilab.fr>
parents: 9128
diff changeset
    54
    schema = config = None
4766
162b2b127b15 [test] get a chance to get proper garbage collection when running pytest on whole cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4763
diff changeset
    55
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    56
    unregister_base_type('BabarTestType')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    57
    helper = get_db_helper('sqlite')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    58
    helper.TYPE_MAPPING.pop('BabarTestType', None)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    59
    helper.TYPE_CONVERTERS.pop('BabarTestType', None)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    60
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    61
cstrtypemap = {'RQLConstraint': 'RQLConstraint_eid',
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    62
               'SizeConstraint': 'SizeConstraint_eid',
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    63
               'StaticVocabularyConstraint': 'StaticVocabularyConstraint_eid',
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    64
               'FormatConstraint': 'FormatConstraint_eid',
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    65
               }
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    66
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    67
class Schema2RQLTC(TestCase):
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    68
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    69
    def test_eschema2rql1(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    70
        self.assertListEqual([
2447
b83fcc2311af fix schemaserial tests: meta doesn't exist anymore
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2200
diff changeset
    71
            ('INSERT CWEType X: X description %(description)s,X final %(final)s,X name %(name)s',
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    72
             {'description': u'define a final relation: '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    73
              'link a final relation type from a non final entity '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    74
              'to a final entity type. used to build the instance schema',
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    75
              'name': u'CWAttribute', 'final': False})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    76
                             list(eschema2rql(schema.eschema('CWAttribute'))))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    77
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    78
    def test_eschema2rql2(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    79
        self.assertListEqual([
2447
b83fcc2311af fix schemaserial tests: meta doesn't exist anymore
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2200
diff changeset
    80
                ('INSERT CWEType X: X description %(description)s,X final %(final)s,X name %(name)s',
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    81
                 {'description': u'', 'final': True, 'name': u'String'})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    82
                             list(eschema2rql(schema.eschema('String'))))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    83
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    84
    def test_eschema2rql_specialization(self):
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
    85
        # x: None since eschema.eid are None
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    86
        self.assertListEqual([('SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s',
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    87
                               {'et': None, 'x': None}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    88
                              ('SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s',
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    89
                               {'et': None, 'x': None})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
    90
                             sorted(specialize2rql(schema)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    91
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    92
    def test_esche2rql_custom_type(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    93
        expected = [('INSERT CWEType X: X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    94
                     'X name %(name)s',
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    95
                     {'description': u'',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    96
                     'name': u'BabarTestType', 'final': True},)]
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    97
        got = list(eschema2rql(schema.eschema('BabarTestType')))
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    98
        self.assertListEqual(expected, got)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    99
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   100
    def test_rschema2rql1(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   101
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   102
            ('INSERT CWRType X: X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   103
             'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   104
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   105
             {'description': u'link a relation definition to its relation type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   106
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   107
              'name': u'relation_type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   108
              'final' : False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   109
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   110
              'inlined': True}),
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   111
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   112
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   113
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   114
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   115
             {'se': None, 'rt': None, 'oe': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   116
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   117
              'composite': u'object',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   118
              'cardinality': u'1*',
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   119
              'ordernum': 1}),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   120
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   121
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   122
             {'x': None, 'ct': u'RQLConstraint_eid',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   123
              'value': u';O;O final TRUE\n'}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   124
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   125
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   126
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   127
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   128
             {'se': None, 'rt': None, 'oe': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   129
              'description': u'', 'composite': u'object',
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   130
              'ordernum': 1, 'cardinality': u'1*'}),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   131
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   132
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   133
             {'x': None, 'ct': u'RQLConstraint_eid', 'value': u';O;O final FALSE\n'}),
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   134
        ],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   135
                             list(rschema2rql(schema.rschema('relation_type'), cstrtypemap)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   136
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   137
    def test_rschema2rql2(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   138
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   139
            ('INSERT CWRType X: X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   140
             'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   141
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   142
             {'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   143
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   144
              'name': u'add_permission',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   145
              'final': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   146
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   147
              'inlined': False}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   148
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   149
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   150
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   151
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   152
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   153
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   154
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   155
              'description': u'groups allowed to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   156
              'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   157
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   158
              'cardinality': u'**'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   159
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   160
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   161
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   162
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   163
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   164
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   165
              'description': u'rql expression allowing to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   166
              'composite': 'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   167
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   168
              'cardinality': u'*?'}),
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   169
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   170
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   171
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   172
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   173
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   174
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   175
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   176
              'description': u'groups allowed to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   177
              'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   178
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   179
              'cardinality': u'**'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   180
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   181
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   182
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   183
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   184
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   185
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   186
              'description': u'rql expression allowing to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   187
              'composite': 'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   188
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   189
              'cardinality': u'*?'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   190
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   191
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   192
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   193
            {'cardinality': u'**',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   194
             'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   195
             'description': u'groups allowed to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   196
             'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   197
             'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   198
             'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   199
             'se': None}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   200
            ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   201
             'X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   202
             'X from_entity SE,X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   203
             {'cardinality': u'*?',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   204
              'composite': u'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   205
              'description': u'rql expression allowing to add entities/relations of this type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   206
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   207
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   208
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   209
              'se': None})],
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   210
                             list(rschema2rql(schema.rschema('add_permission'), cstrtypemap)))
1787
71c143c0ada3 fix test
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_rschema2rql3(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   213
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   214
            ('INSERT CWRType X: X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   215
             'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   216
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   217
             {'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   218
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   219
              'name': u'cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   220
              'final': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   221
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   222
              'inlined': False}),
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   223
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   224
            ('INSERT CWAttribute X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,'
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   225
             'X description %(description)s,X formula %(formula)s,X fulltextindexed %(fulltextindexed)s,'
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   226
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   227
             'X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   228
             'X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   229
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   230
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   231
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   232
              'description': u'subject/object cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   233
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   234
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   235
              'ordernum': 5,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   236
              'defaultval': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   237
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   238
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   239
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   240
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   241
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   242
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   243
              'ct': u'SizeConstraint_eid',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   244
              'value': u'max=2'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   245
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   246
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   247
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   248
              'ct': u'StaticVocabularyConstraint_eid',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   249
              'value': u"u'?1', u'11'"}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   250
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   251
            ('INSERT CWAttribute X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,'
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   252
             'X description %(description)s,X formula %(formula)s,X fulltextindexed %(fulltextindexed)s,'
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   253
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   254
             'X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   255
             'WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   256
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   257
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   258
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   259
              'description': u'subject/object cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   260
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   261
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   262
              'ordernum': 5,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   263
              'defaultval': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   264
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   265
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   266
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   267
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   268
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   269
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   270
              'ct': u'SizeConstraint_eid',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   271
              'value': u'max=2'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   272
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   273
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   274
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   275
              'ct': u'StaticVocabularyConstraint_eid',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   276
              'value': (u"u'?*', u'1*', u'+*', u'**', u'?+', u'1+', u'++', u'*+', u'?1', "
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   277
                        "u'11', u'+1', u'*1', u'??', u'1?', u'+?', u'*?'")})],
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   278
              list(rschema2rql(schema.rschema('cardinality'), cstrtypemap)))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   279
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   280
    def test_rschema2rql_custom_type(self):
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   281
        expected = [('INSERT CWRType X: X description %(description)s,X final %(final)s,'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   282
                     'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   283
                     'X name %(name)s,X symmetric %(symmetric)s',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   284
                     {'description': u'',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   285
                      'final': True,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   286
                      'fulltext_container': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   287
                      'inlined': False,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   288
                      'name': u'custom_field_of_jungle',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   289
                      'symmetric': False}),
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   290
                     ('INSERT CWAttribute X: X cardinality %(cardinality)s,'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   291
                      'X defaultval %(defaultval)s,X description %(description)s,'
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   292
                      'X extra_props %(extra_props)s,X formula %(formula)s,X indexed %(indexed)s,'
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   293
                      'X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   294
                      'X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   295
                      {'cardinality': u'?1',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   296
                       'defaultval': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   297
                       'description': u'',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   298
                       'extra_props': '{"jungle_speed": 42}',
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   299
                       'formula': None,
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   300
                       'indexed': False,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   301
                       'oe': None,
9453
5c4d9dfbf176 [server test] simplify data-schemaserial test instance's schema
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9395
diff changeset
   302
                       'ordernum': 4,
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   303
                       'rt': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   304
                       'se': None})]
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   305
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   306
        got = list(rschema2rql(schema.rschema('custom_field_of_jungle'), cstrtypemap))
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   307
        self.assertEqual(2, len(got))
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   308
        # this is a custom type attribute with an extra parameter
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   309
        self.assertIn('extra_props', got[1][1])
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   310
        # this extr
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   311
        extra_props = got[1][1]['extra_props']
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   312
        self.assertIsInstance(extra_props, Binary)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   313
        got[1][1]['extra_props'] = got[1][1]['extra_props'].getvalue()
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   314
        self.assertListEqual(expected, got)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   315
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   316
    def test_rdef2rql(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   317
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   318
            ('INSERT CWAttribute X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,'
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   319
             'X description %(description)s,X formula %(formula)s,X fulltextindexed %(fulltextindexed)s,'
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   320
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   321
             'X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   322
             'X to_entity OE WHERE SE eid %(se)s,ER eid %(rt)s,OE eid %(oe)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   323
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   324
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   325
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   326
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   327
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   328
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   329
              'ordernum': 3,
9984
793377697c81 merge 3.18.6 into 3.19
Julien Cristau <julien.cristau@logilab.fr>
parents: 9796 9920
diff changeset
   330
              'defaultval': Binary.zpickle(u'text/plain'),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   331
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   332
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   333
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   334
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   335
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   336
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   337
              'value': u'None',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   338
              'ct': 'FormatConstraint_eid'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   339
            ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   340
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   341
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   342
              'value': u'max=50',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   343
              'ct': 'SizeConstraint_eid'})],
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   344
                             list(rdef2rql(schema['description_format'].rdefs[('CWRType', 'String')],
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   345
                                           cstrtypemap)))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   346
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   347
    def test_updateeschema2rql1(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   348
        self.assertListEqual([('SET X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   349
                               'X name %(name)s WHERE X eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   350
                               {'description': u'define a final relation: link a final relation type from'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   351
                                ' a non final entity to a final entity type. used to build the instance schema',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   352
                                'x': 1, 'final': False, 'name': u'CWAttribute'})],
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   353
                             list(updateeschema2rql(schema.eschema('CWAttribute'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   354
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   355
    def test_updateeschema2rql2(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   356
        self.assertListEqual([('SET X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   357
                               'X name %(name)s WHERE X eid %(x)s',
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   358
                               {'description': u'', 'x': 1, 'final': True, 'name': u'String'})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   359
                             list(updateeschema2rql(schema.eschema('String'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   360
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   361
    def test_updaterschema2rql1(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   362
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   363
            ('SET X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   364
             'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   365
             'X name %(name)s,X symmetric %(symmetric)s WHERE X eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   366
             {'x': 1,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   367
              'symmetric': False,
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   368
              'description': u'link a relation definition to its relation type',
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   369
              'final': False, 'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   370
              'inlined': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   371
              'name': u'relation_type'})],
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   372
                             list(updaterschema2rql(schema.rschema('relation_type'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   373
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   374
    def test_updaterschema2rql2(self):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   375
        expected = [
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   376
            ('SET X description %(description)s,X final %(final)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   377
             'X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   378
             'X name %(name)s,X symmetric %(symmetric)s WHERE X eid %(x)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   379
             {'x': 1,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   380
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   381
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   382
              'final': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   383
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   384
              'inlined': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   385
              'name': u'add_permission'})
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   386
            ]
4763
81b0df087375 schema serialization optimization by using eids instead of type names. Heavy refactoring/cleanup on the way
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4680
diff changeset
   387
        for i, (rql, args) in enumerate(updaterschema2rql(schema.rschema('add_permission'), 1)):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   388
            yield self.assertEqual, expected[i], (rql, args)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   389
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   390
class Perms2RQLTC(TestCase):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   391
    GROUP_MAPPING = {
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   392
        'managers': 0,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   393
        'users':  1,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   394
        'guests': 2,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   395
        'owners': 3,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   396
        }
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   397
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   398
    def test_eperms2rql1(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   399
        self.assertListEqual([('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   400
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 1}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   401
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 2}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   402
                              ('SET X add_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   403
                              ('SET X update_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   404
                              ('SET X delete_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   405
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   406
                              for rql, kwargs in erperms2rql(schema.eschema('CWEType'), self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   407
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   408
    def test_rperms2rql2(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   409
        self.assertListEqual([('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   410
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 1}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   411
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 2}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   412
                              ('SET X add_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   413
                              ('SET X delete_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   414
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   415
                              for rql, kwargs in erperms2rql(schema.rschema('read_permission').rdef('CWEType', 'CWGroup'),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   416
                                                             self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   417
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   418
    def test_rperms2rql3(self):
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   419
        self.assertListEqual([('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   420
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 1}),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   421
                              ('SET X read_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 2}),
9395
96dba2efd16d [hooks/security] provide attribute "add" permission
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9299
diff changeset
   422
                              ('SET X add_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0}),
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   423
                              ('SET X update_permission Y WHERE Y eid %(g)s, X eid %(x)s', {'g': 0})],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   424
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   425
                              for rql, kwargs in erperms2rql(schema.rschema('name').rdef('CWEType', 'String'),
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   426
                                                             self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   427
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   428
    #def test_perms2rql(self):
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5575
diff changeset
   429
    #    self.assertListEqual(perms2rql(schema, self.GROUP_MAPPING),
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 0
diff changeset
   430
    #                         ['INSERT CWEType X: X name 'Societe', X final FALSE'])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   431
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   432
class ComputedAttributeAndRelationTC(CubicWebTC):
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   433
    appid = 'data-cwep002'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   434
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   435
    def test(self):
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   436
        # force to read schema from the database
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   437
        self.repo.set_schema(self.repo.deserialize_schema(), resetvreg=False)
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   438
        schema = self.repo.schema
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   439
        self.assertEqual([('Company', 'Person')], list(schema['has_employee'].rdefs))
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   440
        self.assertEqual('O works_for S',
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   441
                         schema['has_employee'].rule)
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   442
        self.assertEqual([('Company', 'Int')], list(schema['total_salary'].rdefs))
9968
50f046bf0e50 [CWEP002] properly handle serialization of computed attributes
Lea Capgen <lea.capgen@logilab.fr>
parents: 9965
diff changeset
   443
        self.assertEqual('Any SUM(SA) GROUPBY X WHERE P works_for X, P salary SA',
50f046bf0e50 [CWEP002] properly handle serialization of computed attributes
Lea Capgen <lea.capgen@logilab.fr>
parents: 9965
diff changeset
   444
                         schema['total_salary'].rdefs['Company', 'Int'].formula)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   445
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   446
if __name__ == '__main__':
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   447
    unittest_main()