summaryrefslogtreecommitdiff
path: root/test/dialect/sqlite.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-10-19 07:02:48 +0000
committerJason Kirtland <jek@discorporate.us>2007-10-19 07:02:48 +0000
commit974f59f091d562bb0e141c6b4087160d16190c1c (patch)
tree59d1b683d2fa09151f592712bb14f380830b2e6d /test/dialect/sqlite.py
parentf32131dac212fdee1a6e97eba4a4ed21e51b3607 (diff)
downloadsqlalchemy-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.py63
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()