0
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 1
"""unit tests for schema rql (de)serialization
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 2
"""
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 3
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 4
import sys
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 5
from cStringIO import StringIO
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 7
from logilab.common.testlib import TestCase , unittest_main
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 8
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 9
from cubicweb.schema import CubicWebSchemaLoader
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 10
from cubicweb.devtools import TestServerConfiguration
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 11
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 12
loader = CubicWebSchemaLoader ()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 13
config = TestServerConfiguration ( 'data' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 14
config . bootstrap_cubes ()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 15
loader . lib_directory = config . schemas_lib_dir ()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 16
schema = loader . load ( config )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 17
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 18
from cubicweb.server.schemaserial import *
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 19
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 20
class Schema2RQLTC ( TestCase ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 21
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 22
def test_eschema2rql1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 23
self . assertListEquals ( list ( eschema2rql ( schema . eschema ( 'EFRDef' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 24
[
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 25
( 'INSERT EEType X: X description %(description)s ,X final %(final)s ,X meta %(meta)s ,X name %(name)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 26
{ 'description' : u 'define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 27
'meta' : True , 'name' : u 'EFRDef' , 'final' : False })
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 28
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 29
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 30
def test_eschema2rql2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 31
self . assertListEquals ( list ( eschema2rql ( schema . eschema ( 'String' ))), [
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 32
( 'INSERT EEType X: X description %(description)s ,X final %(final)s ,X meta %(meta)s ,X name %(name)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 33
{ 'description' : u '' , 'final' : True , 'meta' : True , 'name' : u 'String' })])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 34
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 35
def test_eschema2rql_specialization ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 36
self . assertListEquals ( list ( specialize2rql ( schema )),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 37
[
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 38
( 'SET X specializes ET WHERE X name %(x)s , ET name %(et)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 39
{ 'x' : 'Division' , 'et' : 'Societe' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 40
( 'SET X specializes ET WHERE X name %(x)s , ET name %(et)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 41
{ 'x' : 'SubDivision' , 'et' : 'Division' })])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 42
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 43
def test_rschema2rql1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 44
self . assertListEquals ( list ( rschema2rql ( schema . rschema ( 'relation_type' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 45
[
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 46
( 'INSERT ERType X: X description %(description)s ,X final %(final)s ,X fulltext_container %(fulltext_container)s ,X inlined %(inlined)s ,X meta %(meta)s ,X name %(name)s ,X symetric %(symetric)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 47
{ 'description' : u 'link a relation definition to its relation type' , 'meta' : True , 'symetric' : False , 'name' : u 'relation_type' , 'final' : False , 'fulltext_container' : None , 'inlined' : True }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 48
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 49
{ 'rt' : 'relation_type' , 'description' : u '' , 'composite' : u 'object' , 'oe' : 'ERType' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 50
'ordernum' : 1 , 'cardinality' : u '1*' , 'se' : 'EFRDef' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 51
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is ENFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 52
{ 'rt' : 'relation_type' , 'oe' : 'ERType' , 'ctname' : u 'RQLConstraint' , 'se' : 'EFRDef' , 'value' : u 'O final TRUE' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 53
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 54
{ 'rt' : 'relation_type' , 'description' : u '' , 'composite' : u 'object' , 'oe' : 'ERType' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 55
'ordernum' : 1 , 'cardinality' : u '1*' , 'se' : 'ENFRDef' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 56
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is ENFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 57
{ 'rt' : 'relation_type' , 'oe' : 'ERType' , 'ctname' : u 'RQLConstraint' , 'se' : 'ENFRDef' , 'value' : u 'O final FALSE' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 58
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 59
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 60
def test_rschema2rql2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 61
expected = [
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 62
( 'INSERT ERType X: X description %(description)s ,X final %(final)s ,X fulltext_container %(fulltext_container)s ,X inlined %(inlined)s ,X meta %(meta)s ,X name %(name)s ,X symetric %(symetric)s ' , { 'description' : u 'core relation giving to a group the permission to add an entity or relation type' , 'meta' : True , 'symetric' : False , 'name' : u 'add_permission' , 'final' : False , 'fulltext_container' : None , 'inlined' : False }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 63
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 64
{ 'rt' : 'add_permission' , 'description' : u 'rql expression allowing to add entities/relations of this type' , 'composite' : 'subject' , 'oe' : 'RQLExpression' , 'ordernum' : 5 , 'cardinality' : u '*?' , 'se' : 'EEType' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 65
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 66
{ 'rt' : 'add_permission' , 'description' : u 'rql expression allowing to add entities/relations of this type' , 'composite' : 'subject' , 'oe' : 'RQLExpression' , 'ordernum' : 5 , 'cardinality' : u '*?' , 'se' : 'ERType' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 67
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 68
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 69
{ 'rt' : 'add_permission' , 'description' : u 'groups allowed to add entities/relations of this type' , 'composite' : None , 'oe' : 'EGroup' , 'ordernum' : 3 , 'cardinality' : u '**' , 'se' : 'EEType' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 70
( 'INSERT ENFRDef X: X cardinality %(cardinality)s ,X composite %(composite)s ,X description %(description)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 71
{ 'rt' : 'add_permission' , 'description' : u 'groups allowed to add entities/relations of this type' , 'composite' : None , 'oe' : 'EGroup' , 'ordernum' : 3 , 'cardinality' : u '**' , 'se' : 'ERType' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 72
]
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 73
for i , ( rql , args ) in enumerate ( rschema2rql ( schema . rschema ( 'add_permission' ))):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 74
yield self . assertEquals , ( rql , args ), expected [ i ]
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 75
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 76
def test_rschema2rql3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 77
self . assertListEquals ( list ( rschema2rql ( schema . rschema ( 'cardinality' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 78
[
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 79
( 'INSERT ERType X: X description %(description)s ,X final %(final)s ,X fulltext_container %(fulltext_container)s ,X inlined %(inlined)s ,X meta %(meta)s ,X name %(name)s ,X symetric %(symetric)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 80
{ 'description' : u '' , 'meta' : False , 'symetric' : False , 'name' : u 'cardinality' , 'final' : True , 'fulltext_container' : None , 'inlined' : False }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 81
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 82
( 'INSERT EFRDef X: X cardinality %(cardinality)s ,X defaultval %(defaultval)s ,X description %(description)s ,X fulltextindexed %(fulltextindexed)s ,X indexed %(indexed)s ,X internationalizable %(internationalizable)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 83
{ 'rt' : 'cardinality' , 'description' : u 'subject/object cardinality' , 'internationalizable' : True , 'fulltextindexed' : False , 'ordernum' : 5 , 'defaultval' : None , 'indexed' : False , 'cardinality' : u '?1' , 'oe' : 'String' , 'se' : 'EFRDef' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 84
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is EFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 85
{ 'rt' : 'cardinality' , 'oe' : 'String' , 'ctname' : u 'SizeConstraint' , 'se' : 'EFRDef' , 'value' : u 'max=2' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 86
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is EFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 87
{ 'rt' : 'cardinality' , 'oe' : 'String' , 'ctname' : u 'StaticVocabularyConstraint' , 'se' : 'EFRDef' , 'value' : u "u'?1', u'11', u'??', u'1?'" }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 88
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 89
( 'INSERT EFRDef X: X cardinality %(cardinality)s ,X defaultval %(defaultval)s ,X description %(description)s ,X fulltextindexed %(fulltextindexed)s ,X indexed %(indexed)s ,X internationalizable %(internationalizable)s ,X ordernum %(ordernum)s ,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s ,ER name %(rt)s ,OE name %(oe)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 90
{ 'rt' : 'cardinality' , 'description' : u 'subject/object cardinality' , 'internationalizable' : True , 'fulltextindexed' : False , 'ordernum' : 5 , 'defaultval' : None , 'indexed' : False , 'cardinality' : u '?1' , 'oe' : 'String' , 'se' : 'ENFRDef' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 91
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is EFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 92
{ 'rt' : 'cardinality' , 'oe' : 'String' , 'ctname' : u 'SizeConstraint' , 'se' : 'ENFRDef' , 'value' : u 'max=2' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 93
( 'INSERT EConstraint X: X value %(value)s , X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s , EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s , SE name %(se)s , OE name %(oe)s , EDEF is EFRDef' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 94
{ 'rt' : 'cardinality' , 'oe' : 'String' , 'ctname' : u 'StaticVocabularyConstraint' , 'se' : 'ENFRDef' , 'value' : u "u'?*', u'1*', u'+*', u'**', u'?+', u'1+', u'++', u'*+', u'?1', u'11', u'+1', u'*1', u'??', u'1?', u'+?', u'*?'" }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 95
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 96
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 97
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 98
def test_updateeschema2rql1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 99
self . assertListEquals ( list ( updateeschema2rql ( schema . eschema ( 'EFRDef' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 100
[( 'SET X description %(description)s ,X final %(final)s ,X meta %(meta)s ,X name %(name)s WHERE X is EEType, X name %(et)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 101
{ 'description' : u 'define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema' , 'meta' : True , 'et' : 'EFRDef' , 'final' : False , 'name' : u 'EFRDef' }),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 102
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 103
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 104
def test_updateeschema2rql2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 105
self . assertListEquals ( list ( updateeschema2rql ( schema . eschema ( 'String' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 106
[( 'SET X description %(description)s ,X final %(final)s ,X meta %(meta)s ,X name %(name)s WHERE X is EEType, X name %(et)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 107
{ 'description' : u '' , 'meta' : True , 'et' : 'String' , 'final' : True , 'name' : u 'String' })
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 108
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 109
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 110
def test_updaterschema2rql1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 111
self . assertListEquals ( list ( updaterschema2rql ( schema . rschema ( 'relation_type' ))),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 112
[
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 113
( 'SET X description %(description)s ,X final %(final)s ,X fulltext_container %(fulltext_container)s ,X inlined %(inlined)s ,X meta %(meta)s ,X name %(name)s ,X symetric %(symetric)s WHERE X is ERType, X name %(rt)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 114
{ 'rt' : 'relation_type' , 'symetric' : False ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 115
'description' : u 'link a relation definition to its relation type' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 116
'meta' : True , 'final' : False , 'fulltext_container' : None , 'inlined' : True , 'name' : u 'relation_type' })
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 117
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 118
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 119
def test_updaterschema2rql2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 120
expected = [
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 121
( 'SET X description %(description)s ,X final %(final)s ,X fulltext_container %(fulltext_container)s ,X inlined %(inlined)s ,X meta %(meta)s ,X name %(name)s ,X symetric %(symetric)s WHERE X is ERType, X name %(rt)s ' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 122
{ 'rt' : 'add_permission' , 'symetric' : False ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 123
'description' : u 'core relation giving to a group the permission to add an entity or relation type' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 124
'meta' : True , 'final' : False , 'fulltext_container' : None , 'inlined' : False , 'name' : u 'add_permission' })
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 125
]
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 126
for i , ( rql , args ) in enumerate ( updaterschema2rql ( schema . rschema ( 'add_permission' ))):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 127
yield self . assertEquals , ( rql , args ), expected [ i ]
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 128
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 129
class Perms2RQLTC ( TestCase ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 130
GROUP_MAPPING = {
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 131
'managers' : 0 ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 132
'users' : 1 ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 133
'guests' : 2 ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 134
'owners' : 3 ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 135
}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 136
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 137
def test_eperms2rql1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 138
self . assertListEquals ([ rql for rql , kwargs in erperms2rql ( schema . eschema ( 'EEType' ), self . GROUP_MAPPING )],
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 139
[ 'SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 2' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 140
'SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 141
'SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 1' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 142
'SET X add_permission Y WHERE X is EEType, X name "EEType", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 143
'SET X update_permission Y WHERE X is EEType, X name "EEType", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 144
'SET X update_permission Y WHERE X is EEType, X name "EEType", Y eid 3' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 145
'SET X delete_permission Y WHERE X is EEType, X name "EEType", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 146
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 147
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 148
def test_rperms2rql2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 149
self . assertListEquals ([ rql for rql , kwargs in erperms2rql ( schema . rschema ( 'read_permission' ), self . GROUP_MAPPING )],
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 150
[ 'SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 2' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 151
'SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 152
'SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 1' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 153
'SET X add_permission Y WHERE X is ERType, X name "read_permission", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 154
'SET X delete_permission Y WHERE X is ERType, X name "read_permission", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 155
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 156
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 157
def test_rperms2rql3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 158
self . assertListEquals ([ rql for rql , kwargs in erperms2rql ( schema . rschema ( 'name' ), self . GROUP_MAPPING )],
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 159
[ 'SET X read_permission Y WHERE X is ERType, X name "name", Y eid 2' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 160
'SET X read_permission Y WHERE X is ERType, X name "name", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 161
'SET X read_permission Y WHERE X is ERType, X name "name", Y eid 1' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 162
'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 2' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 163
'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 164
'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 1' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 165
'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 2' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 166
'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 0' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 167
'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 1' ,
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 168
])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 169
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 170
#def test_perms2rql(self):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 171
# self.assertListEquals(perms2rql(schema, self.GROUP_MAPPING),
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 172
# ['INSERT EEType X: X name 'Societe', X final FALSE'])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 173
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 174
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 175
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 176
if __name__ == '__main__' :
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 177
unittest_main ()