1217 def _parse(self, rqls): |
1217 def _parse(self, rqls): |
1218 for rql, sql in rqls: |
1218 for rql, sql in rqls: |
1219 yield self._check, rql, sql |
1219 yield self._check, rql, sql |
1220 |
1220 |
1221 def _checkall(self, rql, sql): |
1221 def _checkall(self, rql, sql): |
|
1222 if isinstance(rql, tuple): |
|
1223 rql, args = rql |
|
1224 else: |
|
1225 args = None |
1222 try: |
1226 try: |
1223 rqlst = self._prepare(rql) |
1227 rqlst = self._prepare(rql) |
1224 r, args, cbs = self.o.generate(rqlst) |
1228 r, args, cbs = self.o.generate(rqlst, args) |
1225 self.assertEqual((r.strip(), args), sql) |
1229 self.assertEqual((r.strip(), args), sql) |
1226 except Exception, ex: |
1230 except Exception, ex: |
1227 print rql |
1231 print rql |
1228 if 'r' in locals(): |
1232 if 'r' in locals(): |
1229 print r.strip() |
1233 print r.strip() |
1231 print sql[0].strip() |
1235 print sql[0].strip() |
1232 raise |
1236 raise |
1233 return |
1237 return |
1234 |
1238 |
1235 def test1(self): |
1239 def test1(self): |
1236 self._checkall('Any count(RDEF) WHERE RDEF relation_type X, X eid %(x)s', |
1240 self._checkall(('Any count(RDEF) WHERE RDEF relation_type X, X eid %(x)s', {'x': None}), |
1237 ("""SELECT COUNT(T1.C0) FROM (SELECT _RDEF.cw_eid AS C0 |
1241 ("""SELECT COUNT(T1.C0) FROM (SELECT _RDEF.cw_eid AS C0 |
1238 FROM cw_CWAttribute AS _RDEF |
1242 FROM cw_CWAttribute AS _RDEF |
1239 WHERE _RDEF.cw_relation_type=%(x)s |
1243 WHERE _RDEF.cw_relation_type=%(x)s |
1240 UNION ALL |
1244 UNION ALL |
1241 SELECT _RDEF.cw_eid AS C0 |
1245 SELECT _RDEF.cw_eid AS C0 |
1242 FROM cw_CWRelation AS _RDEF |
1246 FROM cw_CWRelation AS _RDEF |
1243 WHERE _RDEF.cw_relation_type=%(x)s) AS T1""", {}), |
1247 WHERE _RDEF.cw_relation_type=%(x)s) AS T1""", {}), |
1244 ) |
1248 ) |
1245 |
1249 |
1246 def test2(self): |
1250 def test2(self): |
1247 self._checkall('Any X WHERE C comments X, C eid %(x)s', |
1251 self._checkall(('Any X WHERE C comments X, C eid %(x)s', {'x': None}), |
1248 ('''SELECT rel_comments0.eid_to |
1252 ('''SELECT rel_comments0.eid_to |
1249 FROM comments_relation AS rel_comments0 |
1253 FROM comments_relation AS rel_comments0 |
1250 WHERE rel_comments0.eid_from=%(x)s''', {}) |
1254 WHERE rel_comments0.eid_from=%(x)s''', {}) |
1251 ) |
1255 ) |
1252 |
1256 |