436 rewrite(rqlst, {('C', 'S'): (constraint,)}, {}, 'S') |
436 rewrite(rqlst, {('C', 'S'): (constraint,)}, {}, 'S') |
437 self.assertEqual(rqlst.as_string(), |
437 self.assertEqual(rqlst.as_string(), |
438 u"Any C WHERE C is Card, EXISTS(C owned_by A, A is CWUser)") |
438 u"Any C WHERE C is Card, EXISTS(C owned_by A, A is CWUser)") |
439 |
439 |
440 def test_rqlexpr_not_relation_1_1(self): |
440 def test_rqlexpr_not_relation_1_1(self): |
441 constraint = RRQLExpression('X owned_by Z, Z login "hop"', 'X') |
441 constraint = ERQLExpression('X owned_by Z, Z login "hop"', 'X') |
442 rqlst = parse('Affaire A WHERE NOT EXISTS(A documented_by C)') |
442 rqlst = parse('Affaire A WHERE NOT EXISTS(A documented_by C)') |
443 rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') |
443 rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') |
444 self.assertEqual(rqlst.as_string(), |
444 self.assertEqual(rqlst.as_string(), |
445 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') |
445 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') |
446 |
446 |
447 def test_rqlexpr_not_relation_1_2(self): |
447 def test_rqlexpr_not_relation_1_2(self): |
448 constraint = RRQLExpression('X owned_by Z, Z login "hop"', 'X') |
448 constraint = ERQLExpression('X owned_by Z, Z login "hop"', 'X') |
449 rqlst = parse('Affaire A WHERE NOT EXISTS(A documented_by C)') |
449 rqlst = parse('Affaire A WHERE NOT EXISTS(A documented_by C)') |
450 rewrite(rqlst, {('A', 'X'): (constraint,)}, {}, 'X') |
450 rewrite(rqlst, {('A', 'X'): (constraint,)}, {}, 'X') |
451 self.assertEqual(rqlst.as_string(), |
451 self.assertEqual(rqlst.as_string(), |
452 u'Any A WHERE NOT EXISTS(A documented_by C, C is Card), A is Affaire, EXISTS(A owned_by B, B login "hop", B is CWUser)') |
452 u'Any A WHERE NOT EXISTS(A documented_by C, C is Card), A is Affaire, EXISTS(A owned_by B, B login "hop", B is CWUser)') |
453 |
453 |
454 def test_rqlexpr_not_relation_2(self): |
454 def test_rqlexpr_not_relation_2(self): |
455 constraint = RRQLExpression('X owned_by Z, Z login "hop"', 'X') |
455 constraint = ERQLExpression('X owned_by Z, Z login "hop"', 'X') |
456 rqlst = rqlhelper.parse('Affaire A WHERE NOT A documented_by C', annotate=False) |
456 rqlst = rqlhelper.parse('Affaire A WHERE NOT A documented_by C', annotate=False) |
457 rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') |
457 rewrite(rqlst, {('C', 'X'): (constraint,)}, {}, 'X') |
458 self.assertEqual(rqlst.as_string(), |
458 self.assertEqual(rqlst.as_string(), |
459 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') |
459 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') |
460 |
460 |
461 def test_rqlexpr_multiexpr_outerjoin(self): |
461 def test_rqlexpr_multiexpr_outerjoin(self): |
462 c1 = RRQLExpression('X owned_by Z, Z login "hop"', 'X') |
462 c1 = ERQLExpression('X owned_by Z, Z login "hop"', 'X') |
463 c2 = RRQLExpression('X owned_by Z, Z login "hip"', 'X') |
463 c2 = ERQLExpression('X owned_by Z, Z login "hip"', 'X') |
464 c3 = RRQLExpression('X owned_by Z, Z login "momo"', 'X') |
464 c3 = ERQLExpression('X owned_by Z, Z login "momo"', 'X') |
465 rqlst = rqlhelper.parse('Any A WHERE A documented_by C?', annotate=False) |
465 rqlst = rqlhelper.parse('Any A WHERE A documented_by C?', annotate=False) |
466 rewrite(rqlst, {('C', 'X'): (c1, c2, c3)}, {}, 'X') |
466 rewrite(rqlst, {('C', 'X'): (c1, c2, c3)}, {}, 'X') |
467 self.assertEqual(rqlst.as_string(), |
467 self.assertEqual(rqlst.as_string(), |
468 u'Any A WHERE A documented_by C?, A is Affaire ' |
468 u'Any A WHERE A documented_by C?, A is Affaire ' |
469 'WITH C BEING (Any C WHERE ((EXISTS(C owned_by B, B login "hop")) ' |
469 'WITH C BEING (Any C WHERE ((EXISTS(C owned_by B, B login "hop")) ' |