99 "S is Affaire") |
99 "S is Affaire") |
100 self.failUnless('D' in kwargs) |
100 self.failUnless('D' in kwargs) |
101 |
101 |
102 def test_or(self): |
102 def test_or(self): |
103 constraint = '(X identity U) OR (X in_state ST, CL identity U, CL in_state ST, ST name "subscribed")' |
103 constraint = '(X identity U) OR (X in_state ST, CL identity U, CL in_state ST, ST name "subscribed")' |
104 rqlst = parse('Any S WHERE S owned_by C, C eid %(u)s') |
104 rqlst = parse('Any S WHERE S owned_by C, C eid %(u)s, S is in (CWUser, CWGroup)') |
105 rewrite(rqlst, {'C': (constraint,)}, {'u':1}) |
105 rewrite(rqlst, {'C': (constraint,)}, {'u':1}) |
106 self.failUnlessEqual(rqlst.as_string(), |
106 self.failUnlessEqual(rqlst.as_string(), |
107 "Any S WHERE S owned_by C, C eid %(u)s, A eid %(B)s, " |
107 "Any S WHERE S owned_by C, C eid %(u)s, S is IN(CWUser, CWGroup), A eid %(B)s, " |
108 "EXISTS((C identity A) OR (C in_state D, E identity A, " |
108 "EXISTS((C identity A) OR (C in_state D, E identity A, " |
109 "E in_state D, D name 'subscribed'), D is State, E is CWUser), " |
109 "E in_state D, D name 'subscribed'), D is State, E is CWUser)") |
110 "S is IN(Affaire, Basket, Bookmark, CWAttribute, CWCache, CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, CWRType, CWRelation, CWUser, Card, Comment, Division, Email, EmailAddress, EmailPart, EmailThread, ExternalUri, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)") |
|
111 |
110 |
112 def test_simplified_rqlst(self): |
111 def test_simplified_rqlst(self): |
113 card_constraint = ('X in_state S, U in_group G, P require_state S,' |
112 card_constraint = ('X in_state S, U in_group G, P require_state S,' |
114 'P name "read", P require_group G') |
113 'P name "read", P require_group G') |
115 rqlst = parse('Any 2') # this is the simplified rql st for Any X WHERE X eid 12 |
114 rqlst = parse('Any 2') # this is the simplified rql st for Any X WHERE X eid 12 |