diff -r 0aae5216f99e -r 3e133b29a1a4 test/unittest_rqlrewrite.py --- a/test/unittest_rqlrewrite.py Tue May 25 12:21:17 2010 +0200 +++ b/test/unittest_rqlrewrite.py Wed May 26 10:28:48 2010 +0200 @@ -24,7 +24,7 @@ from rql import parse, nodes, RQLHelper from cubicweb import Unauthorized -from cubicweb.schema import RRQLExpression +from cubicweb.schema import RRQLExpression, ERQLExpression from cubicweb.rqlrewrite import RQLRewriter from cubicweb.devtools import repotest, TestServerConfiguration @@ -350,6 +350,20 @@ self.failUnlessEqual(rqlst.as_string(), u"Any C WHERE C is Card, EXISTS(C owned_by A, A is CWUser)") + def test_rqlexpr_not_relation1(self): + constraint = RRQLExpression('X owned_by Z, Z login "hop"', 'X') + rqlst = parse('Affaire A WHERE NOT EXISTS(A documented_by C)') + rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') + self.failUnlessEqual(rqlst.as_string(), + u'Any A WHERE NOT EXISTS(A documented_by C, EXISTS(C owned_by B, B login "hop", B is CWUser), C is Card), A is Affaire') + + def test_rqlexpr_not_relation2(self): + constraint = RRQLExpression('X owned_by Z, Z login "hop"', 'X') + rqlst = rqlhelper.parse('Affaire A WHERE NOT A documented_by C', annotate=False) + rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') + self.failUnlessEqual(rqlst.as_string(), + u'Any A WHERE NOT EXISTS(A documented_by C, EXISTS(C owned_by B, B login "hop", B is CWUser), C is Card), A is Affaire') + if __name__ == '__main__': unittest_main()