diff options
Diffstat (limited to 'test/dialect/test_sqlite.py')
-rw-r--r-- | test/dialect/test_sqlite.py | 77 |
1 files changed, 72 insertions, 5 deletions
diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py index adfca5b53..b9a5c28c1 100644 --- a/test/dialect/test_sqlite.py +++ b/test/dialect/test_sqlite.py @@ -504,12 +504,49 @@ class DefaultsTest(fixtures.TestBase, AssertsCompiledSQL): Column("x", Boolean, server_default=sql.false()), ) t.create(testing.db) - testing.db.execute(t.insert()) - testing.db.execute(t.insert().values(x=True)) - eq_( - testing.db.execute(t.select().order_by(t.c.x)).fetchall(), - [(False,), (True,)], + with testing.db.connect() as conn: + conn.execute(t.insert()) + conn.execute(t.insert().values(x=True)) + eq_( + conn.execute(t.select().order_by(t.c.x)).fetchall(), + [(False,), (True,)], + ) + + @testing.provide_metadata + def test_function_default(self): + t = Table( + "t", + self.metadata, + Column("id", Integer, primary_key=True), + Column("x", DateTime(), server_default=func.now()), + ) + t.create(testing.db) + with testing.db.connect() as conn: + now = conn.scalar(func.now()) + today = datetime.datetime.today() + conn.execute(t.insert()) + conn.execute(t.insert().values(x=today)) + eq_( + conn.execute(select([t.c.x]).order_by(t.c.id)).fetchall(), + [(now,), (today,)], + ) + + @testing.provide_metadata + def test_expression_with_function_default(self): + t = Table( + "t", + self.metadata, + Column("id", Integer, primary_key=True), + Column("x", Integer(), server_default=func.abs(-5) + 17), ) + t.create(testing.db) + with testing.db.connect() as conn: + conn.execute(t.insert()) + conn.execute(t.insert().values(x=35)) + eq_( + conn.execute(select([t.c.x]).order_by(t.c.id)).fetchall(), + [(22,), (35,)], + ) def test_old_style_default(self): """test non-quoted integer value on older sqlite pragma""" @@ -851,6 +888,36 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL): ")", ) + def test_column_defaults_ddl(self): + + t = Table( + "t", MetaData(), Column("x", Boolean, server_default=sql.false()) + ) + + self.assert_compile( + CreateTable(t), + "CREATE TABLE t (x BOOLEAN DEFAULT (0), CHECK (x IN (0, 1)))", + ) + + t = Table( + "t", + MetaData(), + Column("x", String(), server_default=func.sqlite_version()), + ) + self.assert_compile( + CreateTable(t), + "CREATE TABLE t (x VARCHAR DEFAULT (sqlite_version()))", + ) + + t = Table( + "t", + MetaData(), + Column("x", Integer(), server_default=func.abs(-5) + 17), + ) + self.assert_compile( + CreateTable(t), "CREATE TABLE t (x INTEGER DEFAULT (abs(-5) + 17))" + ) + def test_create_partial_index(self): m = MetaData() tbl = Table("testtbl", m, Column("data", Integer)) |