summaryrefslogtreecommitdiff
path: root/tests/test_autogen_render.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2017-08-16 10:26:16 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2017-08-16 10:58:21 -0400
commit634ae5c521869918905aa589b4f5ed68db0e2d53 (patch)
tree02780ac641eacf1597994515dda4f43ef807f420 /tests/test_autogen_render.py
parentd376785c71699acb233171b07d20f9ba3a45e78c (diff)
downloadalembic-634ae5c521869918905aa589b4f5ed68db0e2d53.tar.gz
Add generic per-type rendering, implement ARRAY
Fixed bug expanding upon the fix for :ticket:`85` which adds the correct module import to the "inner" type for an ``ARRAY`` type, the fix now accommodates for the generic ``sqlalchemy.types.ARRAY`` type added in SQLAlchemy 1.1, rendering the inner type correctly regardless of whether or not the Postgresql dialect is present. Change-Id: I98ffbf95a88dc815404a2d1020b0e3e56742ca8c Fixes: #442
Diffstat (limited to 'tests/test_autogen_render.py')
-rw-r--r--tests/test_autogen_render.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py
index 2882858..dce7b71 100644
--- a/tests/test_autogen_render.py
+++ b/tests/test_autogen_render.py
@@ -7,10 +7,11 @@ from alembic.operations import ops
from sqlalchemy import MetaData, Column, Table, String, \
Numeric, CHAR, ForeignKey, DATETIME, Integer, BigInteger, \
CheckConstraint, Unicode, Enum, cast,\
- UniqueConstraint, Boolean, ForeignKeyConstraint,\
+ DateTime, UniqueConstraint, Boolean, ForeignKeyConstraint,\
PrimaryKeyConstraint, Index, func, text, DefaultClause
from sqlalchemy.types import TIMESTAMP
+from sqlalchemy import types
from sqlalchemy.types import UserDefinedType
from sqlalchemy.engine.default import DefaultDialect
from sqlalchemy.sql import and_, column, literal_column, false, table
@@ -1323,6 +1324,39 @@ class AutogenRenderTest(TestBase):
"sa.Integer()"
)
+ @config.requirements.sqlalchemy_110
+ def test_generic_array_type(self):
+
+ eq_ignore_whitespace(
+ autogenerate.render._repr_type(
+ types.ARRAY(Integer), self.autogen_context),
+ "sa.ARRAY(sa.Integer())"
+ )
+
+ eq_ignore_whitespace(
+ autogenerate.render._repr_type(
+ types.ARRAY(DateTime(timezone=True)), self.autogen_context),
+ "sa.ARRAY(sa.DateTime(timezone=True))"
+ )
+
+ @config.requirements.sqlalchemy_110
+ def test_render_array_no_context(self):
+ uo = ops.UpgradeOps(ops=[
+ ops.CreateTableOp(
+ "sometable",
+ [Column('x', types.ARRAY(Integer))]
+ )
+ ])
+
+ eq_(
+ autogenerate.render_python_code(uo),
+ "# ### commands auto generated by Alembic - please adjust! ###\n"
+ " op.create_table('sometable',\n"
+ " sa.Column('x', sa.ARRAY(sa.Integer()), nullable=True)\n"
+ " )\n"
+ " # ### end Alembic commands ###"
+ )
+
def test_repr_custom_type_w_sqla_prefix(self):
self.autogen_context.opts['user_module_prefix'] = None