diff -r 9c4ea944ecf9 -r ad91f93bbb93 server/test/unittest_rql2sql.py --- a/server/test/unittest_rql2sql.py Thu Mar 25 13:49:07 2010 +0100 +++ b/server/test/unittest_rql2sql.py Thu Mar 25 13:59:47 2010 +0100 @@ -1113,8 +1113,8 @@ args = {'text': 'hip hop momo'} try: union = self._prepare(rql) - r, nargs = self.o.generate(union, args, - varmap=varmap) + r, nargs, cbs = self.o.generate(union, args, + varmap=varmap) args.update(nargs) self.assertLinesEquals((r % args).strip(), self._norm_sql(sql), striplines=True) except Exception, ex: @@ -1135,7 +1135,7 @@ def _checkall(self, rql, sql): try: rqlst = self._prepare(rql) - r, args = self.o.generate(rqlst) + r, args, cbs = self.o.generate(rqlst) self.assertEqual((r.strip(), args), sql) except Exception, ex: print rql @@ -1197,7 +1197,7 @@ def test_is_null_transform(self): union = self._prepare('Any X WHERE X login %(login)s') - r, args = self.o.generate(union, {'login': None}) + r, args, cbs = self.o.generate(union, {'login': None}) self.assertLinesEquals((r % args).strip(), '''SELECT _X.cw_eid FROM cw_CWUser AS _X @@ -1386,11 +1386,11 @@ '''SELECT COUNT(1) WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_Affaire AS _P WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=1 UNION SELECT 1 FROM owned_by_relation AS rel_owned_by1, cw_Note AS _P WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=1)''') - def test_attr_map(self): + def test_attr_map_sqlcb(self): def generate_ref(gen, linkedvar, rel): linkedvar.accept(gen) return 'VERSION_DATA(%s)' % linkedvar._q_sql - self.o.attr_map['Affaire.ref'] = generate_ref + self.o.attr_map['Affaire.ref'] = (generate_ref, False) try: self._check('Any R WHERE X ref R', '''SELECT VERSION_DATA(_X.cw_eid) @@ -1402,6 +1402,17 @@ finally: self.o.attr_map.clear() + def test_attr_map_sourcecb(self): + cb = lambda x,y: None + self.o.attr_map['Affaire.ref'] = (cb, True) + try: + union = self._prepare('Any R WHERE X ref R') + r, nargs, cbs = self.o.generate(union, args={}) + self.assertLinesEquals(r.strip(), 'SELECT _X.cw_ref\nFROM cw_Affaire AS _X') + self.assertEquals(cbs, {0: [cb]}) + finally: + self.o.attr_map.clear() + class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC):