diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-08-16 10:26:16 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-08-16 10:58:21 -0400 |
commit | 634ae5c521869918905aa589b4f5ed68db0e2d53 (patch) | |
tree | 02780ac641eacf1597994515dda4f43ef807f420 /tests/test_autogen_render.py | |
parent | d376785c71699acb233171b07d20f9ba3a45e78c (diff) | |
download | alembic-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.py | 36 |
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 |