diff options
| author | Jason Kirtland <jek@discorporate.us> | 2007-10-19 07:02:48 +0000 |
|---|---|---|
| committer | Jason Kirtland <jek@discorporate.us> | 2007-10-19 07:02:48 +0000 |
| commit | 974f59f091d562bb0e141c6b4087160d16190c1c (patch) | |
| tree | 59d1b683d2fa09151f592712bb14f380830b2e6d /test/dialect/sqlite.py | |
| parent | f32131dac212fdee1a6e97eba4a4ed21e51b3607 (diff) | |
| download | sqlalchemy-974f59f091d562bb0e141c6b4087160d16190c1c.tar.gz | |
Fixed empty (zero column) sqlite inserts, allowing inserts on
autoincrementing single column tables.
Diffstat (limited to 'test/dialect/sqlite.py')
| -rw-r--r-- | test/dialect/sqlite.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/dialect/sqlite.py b/test/dialect/sqlite.py index 43ee9e6a3..e401859bc 100644 --- a/test/dialect/sqlite.py +++ b/test/dialect/sqlite.py @@ -3,6 +3,7 @@ import testbase import datetime from sqlalchemy import * +from sqlalchemy import exceptions from sqlalchemy.databases import sqlite from testlib import * @@ -85,5 +86,67 @@ class DialectTest(AssertMixin): testbase.db.execute("drop table django_content_type") +class InsertTest(AssertMixin): + """Tests inserts and autoincrement.""" + + def _test_empty_insert(self, table, expect=1): + try: + table.create() + for wanted in (expect, expect * 2): + + table.insert().execute() + + rows = table.select().execute().fetchall() + print rows + self.assertEquals(len(rows), wanted) + finally: + table.drop() + + @testing.supported('sqlite') + def test_empty_insert_pk1(self): + self._test_empty_insert( + Table('a', MetaData(testbase.db), + Column('id', Integer, primary_key=True))) + + @testing.supported('sqlite') + def test_empty_insert_pk2(self): + self.assertRaises( + exceptions.DBAPIError, + self._test_empty_insert, + Table('b', MetaData(testbase.db), + Column('x', Integer, primary_key=True), + Column('y', Integer, primary_key=True))) + + @testing.supported('sqlite') + def test_empty_insert_pk3(self): + self.assertRaises( + exceptions.DBAPIError, + self._test_empty_insert, + Table('c', MetaData(testbase.db), + Column('x', Integer, primary_key=True), + Column('y', Integer, PassiveDefault('123'), + primary_key=True))) + + @testing.supported('sqlite') + def test_empty_insert_pk4(self): + self._test_empty_insert( + Table('d', MetaData(testbase.db), + Column('x', Integer, primary_key=True), + Column('y', Integer, PassiveDefault('123')))) + + @testing.supported('sqlite') + def test_empty_insert_nopk1(self): + self._test_empty_insert( + Table('e', MetaData(testbase.db), + Column('id', Integer))) + + @testing.supported('sqlite') + def test_empty_insert_nopk2(self): + self._test_empty_insert( + Table('f', MetaData(testbase.db), + Column('x', Integer), + Column('y', Integer))) + + if __name__ == "__main__": testbase.main() |
