0
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 1
# -*- coding: iso-8859-1 -*-
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 2
"""unit tests for modules cubicweb.server.rqlannotation
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 3
"""
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 4
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 5
from cubicweb.devtools import init_test_database
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 6
from cubicweb.devtools.repotest import BaseQuerierTC
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 7
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 8
repo , cnx = init_test_database ( 'sqlite' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 9
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 10
class SQLGenAnnotatorTC ( BaseQuerierTC ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 11
repo = repo
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 12
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 13
def get_max_eid ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 14
# no need for cleanup here
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 15
return None
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 16
def cleanup ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 17
# no need for cleanup here
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 18
pass
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 19
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 20
def test_0_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 21
rqlst = self . _prepare ( 'Any SEN,RN,OEN WHERE X from_entity SE, SE eid 44, X relation_type R, R eid 139, X to_entity OE, OE eid 42, R name RN, SE name SEN, OE name OEN' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 22
self . assertEquals ( rqlst . defined_vars [ 'SE' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 23
self . assertEquals ( rqlst . defined_vars [ 'OE' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 24
self . assertEquals ( rqlst . defined_vars [ 'R' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 25
self . assertEquals ( rqlst . defined_vars [ 'SE' ] . stinfo [ 'attrvar' ], None )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 26
self . assertEquals ( rqlst . defined_vars [ 'OE' ] . stinfo [ 'attrvar' ], None )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 27
self . assertEquals ( rqlst . defined_vars [ 'R' ] . stinfo [ 'attrvar' ], None )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 28
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 29
def test_0_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 30
rqlst = self . _prepare ( 'Any O WHERE NOT S ecrit_par O, S eid 1, S inline1 P, O inline2 P' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 31
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 32
self . assertEquals ( rqlst . defined_vars [ 'O' ] . stinfo [ 'attrvar' ], None )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 33
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 34
def test_0_4 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 35
rqlst = self . _prepare ( 'Any A,B,C WHERE A eid 12,A comment B, A ?wf_info_for C' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 36
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 37
self . assert_ ( rqlst . defined_vars [ 'B' ] . stinfo [ 'attrvar' ])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 38
self . assertEquals ( rqlst . defined_vars [ 'C' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 39
self . assertEquals ( rqlst . solutions , [{ 'A' : 'TrInfo' , 'B' : 'String' , 'C' : 'Affaire' },
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 40
{ 'A' : 'TrInfo' , 'B' : 'String' , 'C' : 'EUser' },
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 41
{ 'A' : 'TrInfo' , 'B' : 'String' , 'C' : 'Note' }])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 42
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 43
def test_0_5 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 44
rqlst = self . _prepare ( 'Any P WHERE N ecrit_par P, N eid 0' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 45
self . assertEquals ( rqlst . defined_vars [ 'N' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 46
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 47
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 48
def test_0_6 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 49
rqlst = self . _prepare ( 'Any P WHERE NOT N ecrit_par P, N eid 512' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 50
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 51
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 52
def test_0_7 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 53
rqlst = self . _prepare ( 'Personne X,Y where X nom NX, Y nom NX, X eid XE, not Y eid XE' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 54
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 55
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 56
self . assert_ ( rqlst . defined_vars [ 'XE' ] . stinfo [ 'attrvar' ])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 57
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 58
def test_0_8 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 59
rqlst = self . _prepare ( 'Any P WHERE X eid 0, NOT X connait P' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 60
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 61
#self.assertEquals(rqlst.defined_vars['X']._q_invariant, True)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 62
self . assertEquals ( len ( rqlst . solutions ), 1 , rqlst . solutions )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 63
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 64
def test_0_10 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 65
rqlst = self . _prepare ( 'Any X WHERE X concerne Y, Y is Note' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 66
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 67
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 68
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 69
def test_0_11 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 70
rqlst = self . _prepare ( 'Any X WHERE X todo_by Y, X is Affaire' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 71
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 72
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 73
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 74
def test_0_12 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 75
rqlst = self . _prepare ( 'Personne P WHERE P concerne A, A concerne S, S nom "Logilab"' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 76
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 77
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 78
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 79
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 80
def test_1_0 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 81
rqlst = self . _prepare ( 'Any X,Y WHERE X created_by Y, X eid 5, NOT Y eid 6' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 82
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 83
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 84
def test_1_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 85
rqlst = self . _prepare ( 'Any X,Y WHERE X created_by Y, X eid 5, NOT Y eid IN (6,7)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 86
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 87
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 88
def test_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 89
rqlst = self . _prepare ( 'Any X WHERE X identity Y, Y eid 1' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 90
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 91
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 92
def test_7 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 93
rqlst = self . _prepare ( 'Personne X,Y where X nom NX, Y nom NX, X eid XE, not Y eid XE' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 94
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 95
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 96
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 97
def test_optional_inlined ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 98
rqlst = self . _prepare ( 'Any X,S where X from_state S?' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 99
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 100
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 101
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 102
def test_optional_inlined_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 103
rqlst = self . _prepare ( 'Any N,A WHERE N? inline1 A' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 104
self . assertEquals ( rqlst . defined_vars [ 'N' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 105
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 106
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 107
def test_optional_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 108
rqlst = self . _prepare ( 'Any X,S WHERE X travaille S?' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 109
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 110
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 111
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 112
def test_greater_eid ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 113
rqlst = self . _prepare ( 'Any X WHERE X eid > 5' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 114
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 115
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 116
def test_greater_eid_typed ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 117
rqlst = self . _prepare ( 'Any X WHERE X eid > 5, X is Note' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 118
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 119
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 120
def test_max_eid ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 121
rqlst = self . _prepare ( 'Any MAX(X)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 122
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 123
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 124
def test_max_eid_typed ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 125
rqlst = self . _prepare ( 'Any MAX(X) WHERE X is Note' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 126
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 127
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 128
def test_all_entities ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 129
rqlst = self . _prepare ( 'Any X' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 130
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 131
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 132
def test_all_typed_entity ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 133
rqlst = self . _prepare ( 'Any X WHERE X is Note' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 134
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 135
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 136
def test_has_text_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 137
rqlst = self . _prepare ( 'Any X WHERE X has_text "toto tata"' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 138
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 139
self . assertEquals ( rqlst . defined_vars [ 'X' ] . stinfo [ 'principal' ] . r_type , 'has_text' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 140
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 141
def test_has_text_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 142
rqlst = self . _prepare ( 'Any X WHERE X is Personne, X has_text "coucou"' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 143
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 144
self . assertEquals ( rqlst . defined_vars [ 'X' ] . stinfo [ 'principal' ] . r_type , 'has_text' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 145
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 146
def test_not_relation_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 147
# P can't be invariant since deambiguification caused by "NOT X require_permission P"
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 148
# is not considered by generated sql (NOT EXISTS(...))
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 149
rqlst = self . _prepare ( 'Any P,G WHERE P require_group G, NOT X require_permission P' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 150
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 151
self . assertEquals ( rqlst . defined_vars [ 'G' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 152
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 153
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 154
def test_not_relation_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 155
rqlst = self . _prepare ( 'TrInfo X WHERE X eid 2, NOT X from_state Y, Y is State' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 156
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 157
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 158
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 159
def test_not_relation_3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 160
rqlst = self . _prepare ( 'Any X, Y WHERE X eid 1, Y eid in (2, 3)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 161
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 162
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 163
def test_not_relation_4_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 164
rqlst = self . _prepare ( 'Note X WHERE NOT Y evaluee X' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 165
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 166
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 167
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 168
def test_not_relation_4_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 169
rqlst = self . _prepare ( 'Any X WHERE NOT Y evaluee X' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 170
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 171
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 172
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 173
def test_not_relation_4_3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 174
rqlst = self . _prepare ( 'Any Y WHERE NOT Y evaluee X' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 175
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 176
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 177
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 178
def test_not_relation_4_4 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 179
rqlst = self . _prepare ( 'Any X WHERE NOT Y evaluee X, Y is EUser' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 180
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 181
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 182
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 183
def test_not_relation_4_5 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 184
rqlst = self . _prepare ( 'Any X WHERE NOT Y evaluee X, Y eid %s , X is Note' % self . ueid )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 185
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 186
self . assertEquals ( rqlst . solutions , [{ 'X' : 'Note' }])
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 187
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 188
def test_not_relation_5_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 189
rqlst = self . _prepare ( 'Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 190
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 191
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 192
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 193
def test_not_relation_5_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 194
rqlst = self . _prepare ( 'DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 195
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 196
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 197
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 198
def test_not_relation_6 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 199
rqlst = self . _prepare ( 'Personne P where NOT P concerne A' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 200
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 201
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 202
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 203
def test_not_relation_7 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 204
rqlst = self . _prepare ( 'Any K,V WHERE P is EProperty, P pkey K, P value V, NOT P for_user U' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 205
self . assertEquals ( rqlst . defined_vars [ 'P' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 206
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 207
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 208
def test_exists_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 209
rqlst = self . _prepare ( 'Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 210
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 211
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 212
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 213
def test_exists_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 214
rqlst = self . _prepare ( 'Any U WHERE EXISTS(U eid IN (1,2), X owned_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 215
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 216
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 217
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 218
def test_exists_3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 219
rqlst = self . _prepare ( 'Any U WHERE EXISTS(X owned_by U, X bookmarked_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 220
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 221
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 222
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 223
def test_exists_4 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 224
rqlst = self . _prepare ( 'Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 225
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 226
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 227
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 228
def test_exists_5 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 229
rqlst = self . _prepare ( 'DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 230
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 231
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 232
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 233
def test_not_exists_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 234
rqlst = self . _prepare ( 'Any U WHERE NOT EXISTS(X owned_by U, X bookmarked_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 235
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 236
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 237
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 238
def test_not_exists_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 239
rqlst = self . _prepare ( 'Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 240
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 241
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 242
def test_not_exists_distinct_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 243
rqlst = self . _prepare ( 'DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 244
self . assertEquals ( rqlst . defined_vars [ 'Y' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 245
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 246
def test_or_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 247
rqlst = self . _prepare ( 'Any X WHERE X concerne B OR C concerne X, B eid 12, C eid 13' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 248
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 249
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 250
def test_or_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 251
rqlst = self . _prepare ( 'Any X WHERE X created_by U, X concerne B OR C concerne X, B eid 12, C eid 13' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 252
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 253
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 254
self . assertEquals ( rqlst . defined_vars [ 'X' ] . stinfo [ 'principal' ] . r_type , 'created_by' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 255
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 256
def test_or_3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 257
rqlst = self . _prepare ( 'Any N WHERE A evaluee N or EXISTS(N todo_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 258
self . assertEquals ( rqlst . defined_vars [ 'N' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 259
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 260
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 261
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 262
def test_or_exists_1 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 263
# query generated by security rewriting
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 264
rqlst = self . _prepare ( 'DISTINCT Any A,S WHERE A is Affaire, S nom "chouette", S is IN(Division, Societe, SubDivision),'
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 265
'(EXISTS(A owned_by %(D)s )) '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 266
'OR ((((EXISTS(E concerne C?, C owned_by %(D)s , A identity E, C is Note, E is Affaire)) '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 267
'OR (EXISTS(I concerne H?, H owned_by %(D)s , H is Societe, A identity I, I is Affaire))) '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 268
'OR (EXISTS(J concerne G?, G owned_by %(D)s , G is SubDivision, A identity J, J is Affaire))) '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 269
'OR (EXISTS(K concerne F?, F owned_by %(D)s , F is Division, A identity K, K is Affaire)))' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 270
self . assertEquals ( rqlst . defined_vars [ 'A' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 271
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 272
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 273
def test_or_exists_2 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 274
rqlst = self . _prepare ( 'Any U WHERE EXISTS(U in_group G, G name "managers") OR EXISTS(X owned_by U, X bookmarked_by U)' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 275
self . assertEquals ( rqlst . defined_vars [ 'U' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 276
self . assertEquals ( rqlst . defined_vars [ 'G' ] . _q_invariant , False )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 277
self . assertEquals ( rqlst . defined_vars [ 'X' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 278
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 279
def test_or_exists_3 ( self ):
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 280
rqlst = self . _prepare ( 'Any COUNT(S),CS GROUPBY CS ORDERBY 1 DESC LIMIT 10 '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 281
'WHERE C is Societe, S concerne C, C nom CS, '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 282
'(EXISTS(S owned_by 1)) OR (EXISTS(S documented_by N, N title "published"))' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 283
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 284
rqlst = self . _prepare ( 'Any COUNT(S),CS GROUPBY CS ORDERBY 1 DESC LIMIT 10 '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 285
'WHERE S is Affaire, C is Societe, S concerne C, C nom CS, '
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 286
'(EXISTS(S owned_by 1)) OR (EXISTS(S documented_by N, N title "published"))' )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 287
self . assertEquals ( rqlst . defined_vars [ 'S' ] . _q_invariant , True )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 288
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 289
if __name__ == '__main__' :
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 290
from logilab.common.testlib import unittest_main
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 291
unittest_main ()