summaryrefslogtreecommitdiff
path: root/migrate/tests
diff options
context:
space:
mode:
authorchrisw <unknown>2010-09-09 15:38:42 +0100
committerchrisw <unknown>2010-09-09 15:38:42 +0100
commitadf4113a0b8465dc67ea4002da3bc153eb4653db (patch)
tree4307d9d2b7cad2f720287d38017b49d038e763f1 /migrate/tests
parenta085ffa59048e10f8a874ea649aecf3335b4ab79 (diff)
downloadsqalchemy-migrate-adf4113a0b8465dc67ea4002da3bc153eb4653db.tar.gz
Fix issue 94 - it was impossible to add a column with a non-unique index.
Also implement more functionality with unique and foreign key constrains for sqlite.
Diffstat (limited to 'migrate/tests')
-rw-r--r--migrate/tests/changeset/test_changeset.py36
1 files changed, 29 insertions, 7 deletions
diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py
index 8eff822..5c06ef2 100644
--- a/migrate/tests/changeset/test_changeset.py
+++ b/migrate/tests/changeset/test_changeset.py
@@ -223,11 +223,11 @@ class TestAddDropColumn(fixture.DB):
col.drop()
- @fixture.usedb(not_supported='sqlite')
- def test_unique(self):
- """Can create columns with unique constraint"""
+ @fixture.usedb()
+ def test_unique_constraint(self):
self.assertRaises(exceptions.InvalidConstraintError,
Column('data', Integer, unique=True).create, self.table)
+
col = Column('data', Integer)
col.create(self.table, unique_name='data_unique')
@@ -244,14 +244,34 @@ class TestAddDropColumn(fixture.DB):
col.drop(self.table)
# TODO: remove already attached columns with indexes, uniques, pks, fks ..
+
+ def _check_index(self,expected):
+ if 'mysql' in self.engine.name or 'postgres' in self.engine.name:
+ for index in tuple(
+ Table(self.table.name, MetaData(),
+ autoload=True, autoload_with=self.engine).indexes
+ ):
+ if index.name=='ix_data':
+ break
+ self.assertEqual(expected,index.unique)
+
@fixture.usedb()
def test_index(self):
- """Can create columns with indexes"""
- self.assertRaises(exceptions.InvalidConstraintError,
- Column('data', Integer).create, self.table, index_name=True)
col = Column('data', Integer)
col.create(self.table, index_name='ix_data')
+ self._check_index(False)
+
+ Index('ix_data', col).drop(bind=self.engine)
+ col.drop()
+
+ @fixture.usedb()
+ def test_index_unique(self):
+ # shows how to create a unique index
+ col = Column('data', Integer)
+ col.create(self.table)
+ Index('ix_data', col, unique=True).create(bind=self.engine)
+
# check if index was added
self.table.insert(values={'data': 5}).execute()
try:
@@ -262,9 +282,11 @@ class TestAddDropColumn(fixture.DB):
else:
self.fail()
+ self._check_index(True)
+
Index('ix_data', col).drop(bind=self.engine)
col.drop()
-
+
@fixture.usedb()
def test_server_defaults(self):
"""Can create columns with server_default values"""