summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2023-04-28 21:24:43 +0200
committerFederico Caselli <cfederico87@gmail.com>2023-04-28 21:24:43 +0200
commitac0785dc3e56ebe9fc8caa78cd9c564d5e796da3 (patch)
tree2b5b0f58069a9ac28dba9f622e086f267c8df959 /tests
parentabd175bf86b1091fe444b91c4f98dc9ea97ff723 (diff)
downloadalembic-ac0785dc3e56ebe9fc8caa78cd9c564d5e796da3.tar.gz
Fix ExcludeConstraint with func.
Fix autogenerate issue with PostgreSQL :class:`.ExcludeConstraint` that included sqlalchemy functions. The function text was previously rendered as a plain string without surrounding with ``text()``. Fixes: #1230 Change-Id: I0d59e04d5a64132ed86f92a27e4247ac9703f3e0
Diffstat (limited to 'tests')
-rw-r--r--tests/test_postgresql.py41
1 files changed, 33 insertions, 8 deletions
diff --git a/tests/test_postgresql.py b/tests/test_postgresql.py
index 18f50ce..77ed4da 100644
--- a/tests/test_postgresql.py
+++ b/tests/test_postgresql.py
@@ -1053,8 +1053,6 @@ class PostgresqlAutogenRenderTest(TestBase):
)
def test_add_exclude_constraint(self):
- from sqlalchemy.dialects.postgresql import ExcludeConstraint
-
autogen_context = self.autogen_context
m = MetaData()
@@ -1074,8 +1072,6 @@ class PostgresqlAutogenRenderTest(TestBase):
)
def test_add_exclude_constraint_case_sensitive(self):
- from sqlalchemy.dialects.postgresql import ExcludeConstraint
-
autogen_context = self.autogen_context
m = MetaData()
@@ -1100,8 +1096,6 @@ class PostgresqlAutogenRenderTest(TestBase):
)
def test_inline_exclude_constraint(self):
- from sqlalchemy.dialects.postgresql import ExcludeConstraint
-
autogen_context = self.autogen_context
m = MetaData()
@@ -1130,8 +1124,6 @@ class PostgresqlAutogenRenderTest(TestBase):
)
def test_inline_exclude_constraint_case_sensitive(self):
- from sqlalchemy.dialects.postgresql import ExcludeConstraint
-
autogen_context = self.autogen_context
m = MetaData()
@@ -1184,6 +1176,39 @@ class PostgresqlAutogenRenderTest(TestBase):
)
@config.requirements.sqlalchemy_2
+ def test_inline_exclude_constraint_fn(self):
+ """test for #1230"""
+
+ autogen_context = self.autogen_context
+
+ effective_time = Column("effective_time", DateTime(timezone=True))
+ expiry_time = Column("expiry_time", DateTime(timezone=True))
+
+ m = MetaData()
+ t = Table(
+ "TTable",
+ m,
+ effective_time,
+ expiry_time,
+ ExcludeConstraint(
+ (func.tstzrange(effective_time, expiry_time), "&&"),
+ using="gist",
+ ),
+ )
+
+ op_obj = ops.CreateTableOp.from_table(t)
+
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(autogen_context, op_obj),
+ "op.create_table('TTable',sa.Column('effective_time', "
+ "sa.DateTime(timezone=True), nullable=True),"
+ "sa.Column('expiry_time', sa.DateTime(timezone=True), "
+ "nullable=True),postgresql.ExcludeConstraint("
+ "(sa.text('tstzrange(effective_time, expiry_time)'), "
+ "'&&'), using='gist'))",
+ )
+
+ @config.requirements.sqlalchemy_2
def test_inline_exclude_constraint_text(self):
"""test for #1184.