Changeset 730 for trunk/tests


Ignore:
Timestamp:
Jan 12, 2016, 8:58:54 PM (4 years ago)
Author:
cito
Message:

Use query parameters instead of inline values

The single row methods of the DB wrapper class created queries with inline values
instead of passing them separately as parameters, even though our query method
does have this capability. Using query parameters also spares us a lot of quoting
and escaping that is necessary when passing values inline.

Location:
trunk/tests
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/test_classic.py

    r729 r730  
    193193
    194194        r = db.get('_test_schema', 1234)
     195        self.assertIn('dvar', r)
    195196        db.update('_test_schema', _test=1234, dvar=456)
    196197        r = db.get('_test_schema', 1234)
     
    201202        r = db.get('_test_schema', 1234)
    202203        self.assertEqual(r['dvar'], 456)
    203 
    204     def test_quote(self):
    205         db = opendb()
    206         q = db._quote
    207         self.assertEqual(q(0, 'int'), "0")
    208         self.assertEqual(q(0, 'num'), "0")
    209         self.assertEqual(q('0', 'int'), "0")
    210         self.assertEqual(q('0', 'num'), "0")
    211         self.assertEqual(q(1, 'int'), "1")
    212         self.assertEqual(q(1, 'text'), "'1'")
    213         self.assertEqual(q(1, 'num'), "1")
    214         self.assertEqual(q('1', 'int'), "1")
    215         self.assertEqual(q('1', 'text'), "'1'")
    216         self.assertEqual(q('1', 'num'), "1")
    217         self.assertEqual(q(None, 'int'), "NULL")
    218         self.assertEqual(q(1, 'money'), "1")
    219         self.assertEqual(q('1', 'money'), "1")
    220         self.assertEqual(q(1.234, 'money'), "1.234")
    221         self.assertEqual(q('1.234', 'money'), "1.234")
    222         self.assertEqual(q(0, 'money'), "0")
    223         self.assertEqual(q(0.00, 'money'), "0.0")
    224         self.assertEqual(q(Decimal('0.00'), 'money'), "0.00")
    225         self.assertEqual(q(None, 'money'), "NULL")
    226         self.assertEqual(q('', 'money'), "NULL")
    227         self.assertEqual(q(0, 'bool'), "'f'")
    228         self.assertEqual(q('', 'bool'), "NULL")
    229         self.assertEqual(q('f', 'bool'), "'f'")
    230         self.assertEqual(q('off', 'bool'), "'f'")
    231         self.assertEqual(q('no', 'bool'), "'f'")
    232         self.assertEqual(q(1, 'bool'), "'t'")
    233         self.assertEqual(q(9999, 'bool'), "'t'")
    234         self.assertEqual(q(-9999, 'bool'), "'t'")
    235         self.assertEqual(q('1', 'bool'), "'t'")
    236         self.assertEqual(q('t', 'bool'), "'t'")
    237         self.assertEqual(q('on', 'bool'), "'t'")
    238         self.assertEqual(q('yes', 'bool'), "'t'")
    239         self.assertEqual(q('true', 'bool'), "'t'")
    240         self.assertEqual(q('y', 'bool'), "'t'")
    241         self.assertEqual(q('', 'date'), "NULL")
    242         self.assertEqual(q(False, 'date'), "NULL")
    243         self.assertEqual(q(0, 'date'), "NULL")
    244         self.assertEqual(q('some_date', 'date'), "'some_date'")
    245         self.assertEqual(q('current_timestamp', 'date'), "current_timestamp")
    246         self.assertEqual(q('', 'text'), "''")
    247         self.assertEqual(q("'", 'text'), "''''")
    248         self.assertEqual(q("\\", 'text'), "'\\\\'")
    249204
    250205    def notify_callback(self, arg_dict):
  • trunk/tests/test_classic_connection.py

    r690 r730  
    13481348        en_money = '$34.25', '$ 34.25', '34.25$', '34.25 $', '34.25 Dollar'
    13491349        de_locales = 'de', 'de_DE', 'de_DE.utf8', 'de_DE.UTF-8'
    1350         de_money = ('34,25€', '34,25 €', '€34,25' '€ 34,25',
     1350        de_money = ('34,25€', '34,25 €', '€34,25', '€ 34,25',
    13511351            'EUR34,25', 'EUR 34,25', '34,25 EUR', '34,25 Euro', '34,25 DM')
    13521352        # first try with English localization (using the point)
  • trunk/tests/test_classic_dbwrapper.py

    r729 r730  
    406406        self.assertEqual(f(r'\\x4f007073ff21'), b'\\x4f007073ff21')
    407407
    408     def testQuote(self):
    409         f = self.db._quote
    410         self.assertEqual(f(None, None), 'NULL')
    411         self.assertEqual(f(None, 'int'), 'NULL')
    412         self.assertEqual(f(None, 'float'), 'NULL')
    413         self.assertEqual(f(None, 'num'), 'NULL')
    414         self.assertEqual(f(None, 'money'), 'NULL')
    415         self.assertEqual(f(None, 'bool'), 'NULL')
    416         self.assertEqual(f(None, 'date'), 'NULL')
    417         self.assertEqual(f('', 'int'), 'NULL')
    418         self.assertEqual(f('', 'float'), 'NULL')
    419         self.assertEqual(f('', 'num'), 'NULL')
    420         self.assertEqual(f('', 'money'), 'NULL')
    421         self.assertEqual(f('', 'bool'), 'NULL')
    422         self.assertEqual(f('', 'date'), 'NULL')
    423         self.assertEqual(f('', 'text'), "''")
    424         self.assertEqual(f(0, 'int'), '0')
    425         self.assertEqual(f(0, 'num'), '0')
    426         self.assertEqual(f(1, 'int'), '1')
    427         self.assertEqual(f(1, 'num'), '1')
    428         self.assertEqual(f(-1, 'int'), '-1')
    429         self.assertEqual(f(-1, 'num'), '-1')
    430         self.assertEqual(f(123456789, 'int'), '123456789')
    431         self.assertEqual(f(123456987, 'num'), '123456987')
    432         self.assertEqual(f(1.23654789, 'num'), '1.23654789')
    433         self.assertEqual(f(12365478.9, 'num'), '12365478.9')
    434         self.assertEqual(f('123456789', 'num'), '123456789')
    435         self.assertEqual(f('1.23456789', 'num'), '1.23456789')
    436         self.assertEqual(f('12345678.9', 'num'), '12345678.9')
    437         self.assertEqual(f(123, 'money'), '123')
    438         self.assertEqual(f('123', 'money'), '123')
    439         self.assertEqual(f(123.45, 'money'), '123.45')
    440         self.assertEqual(f('123.45', 'money'), '123.45')
    441         self.assertEqual(f(123.454, 'money'), '123.454')
    442         self.assertEqual(f('123.454', 'money'), '123.454')
    443         self.assertEqual(f(123.456, 'money'), '123.456')
    444         self.assertEqual(f('123.456', 'money'), '123.456')
    445         self.assertEqual(f('f', 'bool'), "'f'")
    446         self.assertEqual(f('F', 'bool'), "'f'")
    447         self.assertEqual(f('false', 'bool'), "'f'")
    448         self.assertEqual(f('False', 'bool'), "'f'")
    449         self.assertEqual(f('FALSE', 'bool'), "'f'")
    450         self.assertEqual(f(0, 'bool'), "'f'")
    451         self.assertEqual(f('0', 'bool'), "'f'")
    452         self.assertEqual(f('-', 'bool'), "'f'")
    453         self.assertEqual(f('n', 'bool'), "'f'")
    454         self.assertEqual(f('N', 'bool'), "'f'")
    455         self.assertEqual(f('no', 'bool'), "'f'")
    456         self.assertEqual(f('off', 'bool'), "'f'")
    457         self.assertEqual(f('t', 'bool'), "'t'")
    458         self.assertEqual(f('T', 'bool'), "'t'")
    459         self.assertEqual(f('true', 'bool'), "'t'")
    460         self.assertEqual(f('True', 'bool'), "'t'")
    461         self.assertEqual(f('TRUE', 'bool'), "'t'")
    462         self.assertEqual(f(1, 'bool'), "'t'")
    463         self.assertEqual(f(2, 'bool'), "'t'")
    464         self.assertEqual(f(-1, 'bool'), "'t'")
    465         self.assertEqual(f(0.5, 'bool'), "'t'")
    466         self.assertEqual(f('1', 'bool'), "'t'")
    467         self.assertEqual(f('y', 'bool'), "'t'")
    468         self.assertEqual(f('Y', 'bool'), "'t'")
    469         self.assertEqual(f('yes', 'bool'), "'t'")
    470         self.assertEqual(f('on', 'bool'), "'t'")
    471         self.assertEqual(f('01.01.2000', 'date'), "'01.01.2000'")
    472         self.assertEqual(f(123, 'text'), "'123'")
    473         self.assertEqual(f(1.23, 'text'), "'1.23'")
    474         self.assertEqual(f('abc', 'text'), "'abc'")
    475         self.assertEqual(f("ab'c", 'text'), "'ab''c'")
    476         self.assertEqual(f('ab\\c', 'text'), "'ab\\c'")
    477         self.assertEqual(f("a\\b'c", 'text'), "'a\\b''c'")
    478         self.db.query('set standard_conforming_strings=off')
    479         self.assertEqual(f('ab\\c', 'text'), "'ab\\\\c'")
    480         self.assertEqual(f("a\\b'c", 'text'), "'a\\\\b''c'")
    481 
    482408    def testQuery(self):
    483409        query = self.db.query
     
    787713        insert = self.db.insert
    788714        query = self.db.query
    789         server_version = self.db.server_version
    790715        bool_on = pg.get_bool()
    791716        decimal = pg.get_decimal()
     
    860785                    if m is not None:
    861786                        expect['m'] = decimal(m)
    862                 if data.get('m') and server_version < 910000:
    863                     # PostgreSQL < 9.1 cannot directly convert numbers to money
    864                     data['m'] = "'%s'::money" % data['m']
    865787                self.assertEqual(insert(table, data), data)
    866788                self.assertIn(oid_table, data)
     
    11301052        query('drop table if exists bytea_test')
    11311053        query('create table bytea_test (n smallint primary key, data bytea)')
     1054        # insert null value
     1055        r = self.db.insert('bytea_test', n=0, data=None)
     1056        self.assertIsInstance(r, dict)
     1057        self.assertIn('n', r)
     1058        self.assertEqual(r['n'], 0)
     1059        self.assertIn('data', r)
     1060        self.assertIsNone(r['data'])
     1061        s = b'None'
     1062        r = self.db.update('bytea_test', n=0, data=s)
     1063        self.assertIsInstance(r, dict)
     1064        self.assertIn('n', r)
     1065        self.assertEqual(r['n'], 0)
     1066        self.assertIn('data', r)
     1067        r = r['data']
     1068        self.assertIsInstance(r, bytes)
     1069        self.assertEqual(r, s)
     1070        r = self.db.update('bytea_test', n=0, data=None)
     1071        self.assertIsNone(r['data'])
    11321072        # insert as bytes
    11331073        s = b"It's all \\ kinds \x00 of\r nasty \xff stuff!\n"
Note: See TracChangeset for help on using the changeset viewer.