diff options
author | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2008-07-24 14:34:48 +0200 |
---|---|---|
committer | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2008-07-24 14:34:48 +0200 |
commit | 1a4dcdc0f6b17410c97511f85cdc9211360f2825 (patch) | |
tree | 65b1149858ea701843fb7cb092e83704af49efa5 /test | |
parent | 599c946f9039e418fcde1c6dd75eb138b811d30c (diff) | |
download | logilab-common-1a4dcdc0f6b17410c97511f85cdc9211360f2825.tar.gz |
[adbh] supported_backends is now defined in lgc (was defined in RQL before)
Each FunctionDescr can now declare on which DB it is supported
Diffstat (limited to 'test')
-rw-r--r-- | test/unittest_db.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/test/unittest_db.py b/test/unittest_db.py index de86afd..9610ae8 100644 --- a/test/unittest_db.py +++ b/test/unittest_db.py @@ -7,7 +7,10 @@ import socket from logilab.common.testlib import TestCase, unittest_main from logilab.common.db import * from logilab.common.db import PREFERED_DRIVERS -from logilab.common.adbh import _SqliteAdvFuncHelper, _PGAdvFuncHelper +from logilab.common.adbh import (_GenericAdvFuncHelper, _SqliteAdvFuncHelper, + _PGAdvFuncHelper, _MyAdvFuncHelper, + FunctionDescr, get_adv_func_helper, + auto_register_function) class PreferedDriverTC(TestCase): @@ -132,6 +135,7 @@ class DBAPIAdaptersTC(TestCase): def setUp(self): """Memorize original PREFERED_DRIVERS""" self.old_drivers = PREFERED_DRIVERS['postgres'][:] + self.base_functions = dict(_GenericAdvFuncHelper.FUNCTIONS) self.host = 'crater.logilab.fr' self.db = 'gincotest2' self.user = 'adim' @@ -140,6 +144,10 @@ class DBAPIAdaptersTC(TestCase): def tearDown(self): """Reset PREFERED_DRIVERS as it was""" PREFERED_DRIVERS['postgres'] = self.old_drivers + _GenericAdvFuncHelper.FUNCTIONS = self.base_functions + _PGAdvFuncHelper.FUNCTIONS = dict(self.base_functions) + _MyAdvFuncHelper.FUNCTIONS = dict(self.base_functions) + _SqliteAdvFuncHelper.FUNCTIONS = dict(self.base_functions) def test_raise(self): self.assertRaises(UnknownDriver, get_dbapi_compliant_module, 'pougloup') @@ -185,5 +193,41 @@ class DBAPIAdaptersTC(TestCase): self.failUnless(isinstance(module.adv_func_helper, _SqliteAdvFuncHelper)) + def test_auto_register_funcdef(self): + class RANDOM(FunctionDescr): + supported_backends = ('postgres', 'sqlite',) + rtype = 'Float' + minargs = maxargs = 0 + name_mapping = {'postgres': 'RANDOM', + 'mysql': 'RAND', + 'sqlite': 'SQLITE_RANDOM'} + auto_register_function(RANDOM) + + pghelper = get_adv_func_helper('postgres') + mshelper = get_adv_func_helper('mysql') + slhelper = get_adv_func_helper('sqlite') + self.failUnless('RANDOM' in pghelper.FUNCTIONS) + self.failUnless('RANDOM' in slhelper.FUNCTIONS) + self.failIf('RANDOM' in mshelper.FUNCTIONS) + + + def test_funcname_with_different_backend_names(self): + class RANDOM(FunctionDescr): + supported_backends = ('postgres', 'mysql', 'sqlite') + rtype = 'Float' + minargs = maxargs = 0 + name_mapping = {'postgres': 'RANDOM', + 'mysql': 'RAND', + 'sqlite': 'SQLITE_RANDOM'} + auto_register_function(RANDOM) + + pghelper = get_adv_func_helper('postgres') + mshelper = get_adv_func_helper('mysql') + slhelper = get_adv_func_helper('sqlite') + self.assertEquals(pghelper.func_sqlname('RANDOM'), 'RANDOM') + self.assertEquals(mshelper.func_sqlname('RANDOM'), 'RAND') + self.assertEquals(slhelper.func_sqlname('RANDOM'), 'SQLITE_RANDOM') + + if __name__ == '__main__': unittest_main() |