cubicweb/server/test/unittest_schemaserial.py
author Julien Cristau <julien.cristau@logilab.fr>
Wed, 16 Mar 2016 11:56:32 +0100
changeset 11215 4e79acdc36a6
parent 11077 09be48c01fa4
child 11269 73ac69970047
permissions -rw-r--r--
[schema] use json to serialize constraints Require yams 0.43: constraints are serialized to json, which means we need to recreate the actual checks in the database on upgrade. Temporary deps in tox.ini to pull respective changes in yams.
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
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
    20
from cubicweb import Binary
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
from cubicweb.schema import CubicWebSchemaLoader
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    22
from cubicweb.devtools import TestServerConfiguration
11077
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
    23
from cubicweb.devtools.testlib import BaseTestCase as TestCase, CubicWebTC
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    24
9796
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    25
from cubicweb.server.schemaserial import (updateeschema2rql, updaterschema2rql, rschema2rql,
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    26
                                          eschema2rql, rdef2rql, specialize2rql,
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    27
                                          _erperms2rql as erperms2rql)
2d1e488f6f71 [tests/schemaserial] kill star import
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9795
diff changeset
    28
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    29
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
    30
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
    31
9140
e7ffe39d4b1a [test] make unittest_schemaserial.py runnable with python
David Douard <david.douard@logilab.fr>
parents: 9128
diff changeset
    32
schema = config = None
6781
5062d86d6ffe [unittest2] use unittest2 module fixture api
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6632
diff changeset
    33
def setUpModule(*args):
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    34
    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
    35
    helper = get_db_helper('sqlite')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    36
    helper.TYPE_MAPPING['BabarTestType'] = 'TEXT'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    37
    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
    38
6631
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    39
    global schema, config
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    40
    loader = CubicWebSchemaLoader()
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    41
    apphome = Schema2RQLTC.datadir + '-schemaserial'
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    42
    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
    43
    config.bootstrap_cubes()
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    44
    schema = loader.load(config)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    45
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    46
6781
5062d86d6ffe [unittest2] use unittest2 module fixture api
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 6632
diff changeset
    47
def tearDownModule(*args):
6631
26c303c3f1aa [test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    48
    global schema, config
9140
e7ffe39d4b1a [test] make unittest_schemaserial.py runnable with python
David Douard <david.douard@logilab.fr>
parents: 9128
diff changeset
    49
    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
    50
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    51
    unregister_base_type('BabarTestType')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    52
    helper = get_db_helper('sqlite')
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    53
    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
    54
    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
    55
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
    56
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
    57
               '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
    58
               '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
    59
               '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
    60
               }
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
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    62
class Schema2RQLTC(TestCase):
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    63
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    64
    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
    65
        self.assertListEqual([
2447
b83fcc2311af fix schemaserial tests: meta doesn't exist anymore
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2200
diff changeset
    66
            ('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
    67
             {'description': u'define a final relation: '
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    68
              '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
    69
              '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
    70
              '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
    71
                             list(eschema2rql(schema.eschema('CWAttribute'))))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    72
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    73
    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
    74
        self.assertListEqual([
2447
b83fcc2311af fix schemaserial tests: meta doesn't exist anymore
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2200
diff changeset
    75
                ('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
    76
                 {'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
    77
                             list(eschema2rql(schema.eschema('String'))))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    78
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    79
    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
    80
        # 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
    81
        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
    82
                               {'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
    83
                              ('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
    84
                               {'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
    85
                             sorted(specialize2rql(schema)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    86
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    87
    def test_esche2rql_custom_type(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    88
        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
    89
                     'X name %(name)s',
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    90
                     {'description': u'',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    91
                     'name': u'BabarTestType', 'final': True},)]
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    92
        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
    93
        self.assertListEqual(expected, got)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
    94
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    95
    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
    96
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
    97
            ('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
    98
             '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
    99
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   100
             {'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
   101
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   102
              'name': u'relation_type',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   103
              'final' : False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   104
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   105
              'inlined': True}),
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   106
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   107
            ('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
   108
             '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
   109
             '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
   110
             {'se': None, 'rt': None, 'oe': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   111
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   112
              'composite': u'object',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   113
              '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
   114
              'ordernum': 1}),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   115
            ('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
   116
             '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
   117
             {'x': None, 'ct': u'RQLConstraint_eid',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   118
              'value': u'{"expression": "O final TRUE", "mainvars": ["O"], "msg": null}'}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   119
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   120
            ('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
   121
             '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
   122
             '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
   123
             {'se': None, 'rt': None, 'oe': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   124
              '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
   125
              'ordernum': 1, 'cardinality': u'1*'}),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   126
            ('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
   127
             'WHERE CT eid %(ct)s, EDEF eid %(x)s',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   128
             {'x': None, 'ct': u'RQLConstraint_eid', 'value': u'{"expression": "O final FALSE", "mainvars": ["O"], "msg": null}'}),
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   129
        ],
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   130
                             list(rschema2rql(schema.rschema('relation_type'), cstrtypemap)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   131
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   132
    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
   133
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   134
            ('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
   135
             '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
   136
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   137
             {'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   138
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   139
              'name': u'add_permission',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   140
              'final': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   141
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   142
              'inlined': False}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   143
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   144
            ('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
   145
             '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
   146
             '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
   147
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   148
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   149
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   150
              '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
   151
              'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   152
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   153
              'cardinality': u'**'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   154
            ('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
   155
             '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
   156
             '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
   157
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   158
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   159
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   160
              '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
   161
              'composite': 'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   162
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   163
              'cardinality': u'*?'}),
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   164
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   165
            ('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
   166
             '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
   167
             '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
   168
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   169
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   170
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   171
              '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
   172
              'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   173
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   174
              'cardinality': u'**'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   175
            ('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
   176
             '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
   177
             '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
   178
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   179
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   180
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   181
              '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
   182
              'composite': 'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   183
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   184
              'cardinality': u'*?'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   185
            ('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
   186
             '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
   187
             '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
   188
            {'cardinality': u'**',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   189
             'composite': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   190
             '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
   191
             'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   192
             'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   193
             'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   194
             'se': None}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   195
            ('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
   196
             '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
   197
             '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
   198
             {'cardinality': u'*?',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   199
              'composite': u'subject',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   200
              '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
   201
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   202
              'ordernum': 9999,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   203
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   204
              'se': None})],
9128
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   205
                             list(rschema2rql(schema.rschema('add_permission'), cstrtypemap)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   206
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   207
    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
   208
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   209
            ('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
   210
             '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
   211
             'X name %(name)s,X symmetric %(symmetric)s',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   212
             {'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   213
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   214
              'name': u'cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   215
              'final': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   216
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   217
              'inlined': False}),
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   218
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   219
            ('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
   220
             '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
   221
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   222
             '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
   223
             '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
   224
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   225
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   226
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   227
              'description': u'subject/object cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   228
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   229
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   230
              'ordernum': 5,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   231
              'defaultval': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   232
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   233
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   234
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   235
            ('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
   236
             '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
   237
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   238
              'ct': u'SizeConstraint_eid',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   239
              'value': u'{"max": 2, "min": null}'}),
9795
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'StaticVocabularyConstraint_eid',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   244
              'value': u'["?1", "11"]'}),
4191
01638461d4b0 test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3978
diff changeset
   245
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   246
            ('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
   247
             '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
   248
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   249
             '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
   250
             '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
   251
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   252
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   253
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   254
              'description': u'subject/object cardinality',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   255
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   256
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   257
              'ordernum': 5,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   258
              'defaultval': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   259
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   260
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   261
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   262
            ('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
   263
             '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
   264
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   265
              'ct': u'SizeConstraint_eid',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   266
              'value': u'{"max": 2, "min": null}'}),
9795
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'StaticVocabularyConstraint_eid',
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   271
              "value": (u'["?*", "1*", "+*", "**", "?+", "1+", "++", "*+", "?1", '
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   272
                        u'"11", "+1", "*1", "??", "1?", "+?", "*?"]')})],
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   273
              list(rschema2rql(schema.rschema('cardinality'), cstrtypemap)))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   274
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   275
    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
   276
        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
   277
                     '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
   278
                     '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
   279
                     {'description': u'',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   280
                      'final': True,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   281
                      'fulltext_container': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   282
                      'inlined': False,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   283
                      '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
   284
                      'symmetric': False}),
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   285
                     ('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
   286
                      '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
   287
                      '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
   288
                      '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
   289
                      '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
   290
                      {'cardinality': u'?1',
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   291
                       'defaultval': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   292
                       'description': u'',
10811
5a1b4361a797 [server/test] CWAttribute.extra_props is Bytes
Julien Cristau <julien.cristau@logilab.fr>
parents: 10553
diff changeset
   293
                       'extra_props': b'{"jungle_speed": 42}',
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   294
                       'formula': None,
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   295
                       'indexed': False,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   296
                       'oe': None,
9453
5c4d9dfbf176 [server test] simplify data-schemaserial test instance's schema
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9395
diff changeset
   297
                       'ordernum': 4,
8945
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   298
                       'rt': None,
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   299
                       'se': None})]
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   300
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   301
        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
   302
        self.assertEqual(2, len(got))
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   303
        # 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
   304
        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
   305
        # this extr
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   306
        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
   307
        self.assertIsInstance(extra_props, Binary)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   308
        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
   309
        self.assertListEqual(expected, got)
ba9e3fbfa5a5 [schemaserial] serialize additional yams parameter for customs type
Vincent Michel <vincent.michel@logilab.fr>
parents: 8223
diff changeset
   310
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
   311
    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
   312
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   313
            ('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
   314
             '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
   315
             'X indexed %(indexed)s,X internationalizable %(internationalizable)s,'
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   316
             '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
   317
             '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
   318
             {'se': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   319
              'rt': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   320
              'oe': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   321
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   322
              'internationalizable': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   323
              'fulltextindexed': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   324
              'ordernum': 3,
9984
793377697c81 merge 3.18.6 into 3.19
Julien Cristau <julien.cristau@logilab.fr>
parents: 9796 9920
diff changeset
   325
              'defaultval': Binary.zpickle(u'text/plain'),
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   326
              'indexed': False,
9965
a8769b752299 [CWEP002] Account for attribute formula in schema bootstrap
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9956
diff changeset
   327
              'formula': None,
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   328
              'cardinality': u'?1'}),
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   329
            ('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
   330
             '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
   331
             {'x': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   332
              'value': u'None',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   333
              'ct': 'FormatConstraint_eid'}),
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,
11215
4e79acdc36a6 [schema] use json to serialize constraints
Julien Cristau <julien.cristau@logilab.fr>
parents: 11077
diff changeset
   337
              'value': u'{"max": 50, "min": null}',
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   338
              'ct': 'SizeConstraint_eid'})],
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   339
                             list(rdef2rql(schema['description_format'].rdefs[('CWRType', 'String')],
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   340
                                           cstrtypemap)))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   341
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   342
    def test_updateeschema2rql1(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   343
        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
   344
                               '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
   345
                               {'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
   346
                                ' 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
   347
                                '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
   348
                             list(updateeschema2rql(schema.eschema('CWAttribute'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   349
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   350
    def test_updateeschema2rql2(self):
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   351
        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
   352
                               '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
   353
                               {'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
   354
                             list(updateeschema2rql(schema.eschema('String'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   355
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   356
    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
   357
        self.assertListEqual([
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   358
            ('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
   359
             '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
   360
             '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
   361
             {'x': 1,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   362
              'symmetric': False,
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   363
              '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
   364
              'final': False, 'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   365
              'inlined': True,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   366
              '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
   367
                             list(updaterschema2rql(schema.rschema('relation_type'), 1)))
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   368
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   369
    def test_updaterschema2rql2(self):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   370
        expected = [
9795
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   371
            ('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
   372
             '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
   373
             '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
   374
             {'x': 1,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   375
              'symmetric': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   376
              'description': u'',
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   377
              'final': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   378
              'fulltext_container': None,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   379
              'inlined': False,
e8039b12d52e [tests/schemaserial] break long lines
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9453
diff changeset
   380
              'name': u'add_permission'})
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   381
            ]
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
   382
        for i, (rql, args) in enumerate(updaterschema2rql(schema.rschema('add_permission'), 1)):
11077
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   383
            with self.subTest(i=i):
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   384
                self.assertEqual((rql, args), expected[i])
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   385
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   386
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   387
class Perms2RQLTC(TestCase):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   388
    GROUP_MAPPING = {
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   389
        'managers': 0,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   390
        'users':  1,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   391
        'guests': 2,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   392
        'owners': 3,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   393
        }
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   394
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   395
    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
   396
        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
   397
                              ('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
   398
                              ('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
   399
                              ('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
   400
                              ('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
   401
                              ('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
   402
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   403
                              for rql, kwargs in erperms2rql(schema.eschema('CWEType'), self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   404
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   405
    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
   406
        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
   407
                              ('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
   408
                              ('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
   409
                              ('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
   410
                              ('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
   411
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   412
                              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
   413
                                                             self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   414
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   415
    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
   416
        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
   417
                              ('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
   418
                              ('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
   419
                              ('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
   420
                              ('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
   421
                             [(rql, kwargs)
d988eec2d5d3 [test/schemaserial] swap got/expected to get nicer unittest2 diagnostics
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8945
diff changeset
   422
                              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
   423
                                                             self.GROUP_MAPPING)])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   424
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   425
    #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
   426
    #    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
   427
    #                         ['INSERT CWEType X: X name 'Societe', X final FALSE'])
1787
71c143c0ada3 fix test
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   428
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   429
class ComputedAttributeAndRelationTC(CubicWebTC):
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   430
    appid = 'data-cwep002'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   431
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   432
    def test(self):
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   433
        # 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
   434
        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
   435
        schema = self.repo.schema
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   436
        self.assertEqual([('Company', 'Person')], list(schema['has_employee'].rdefs))
10553
1d824df4f2bd Fix (de)serialization of ComputedRelation read permissions
Julien Cristau <julien.cristau@logilab.fr>
parents: 10213
diff changeset
   437
        self.assertEqual(schema['has_employee'].rdef('Company', 'Person').permissions['read'],
1d824df4f2bd Fix (de)serialization of ComputedRelation read permissions
Julien Cristau <julien.cristau@logilab.fr>
parents: 10213
diff changeset
   438
                         (u'managers',))
9956
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   439
        self.assertEqual('O works_for S',
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   440
                         schema['has_employee'].rule)
19a683a0047c [CWEP002] properly handle serialization of computed relations
Lea Capgen <lea.capgen@logilab.fr>
parents: 9796
diff changeset
   441
        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
   442
        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
   443
                         schema['total_salary'].rdefs['Company', 'Int'].formula)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   444
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   445
if __name__ == '__main__':
11077
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   446
    from unittest import main
09be48c01fa4 [test] Re-implement generative tests with subtests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   447
    main()