summaryrefslogtreecommitdiff
path: root/src/mailman/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/database')
-rw-r--r--src/mailman/database/alembic/versions/70af5a4e5790_digests.py27
-rw-r--r--src/mailman/database/tests/test_migrations.py27
2 files changed, 54 insertions, 0 deletions
diff --git a/src/mailman/database/alembic/versions/70af5a4e5790_digests.py b/src/mailman/database/alembic/versions/70af5a4e5790_digests.py
new file mode 100644
index 000000000..5df46b584
--- /dev/null
+++ b/src/mailman/database/alembic/versions/70af5a4e5790_digests.py
@@ -0,0 +1,27 @@
+"""digests
+
+Revision ID: 70af5a4e5790
+Revises: 47294d3a604
+Create Date: 2015-12-19 12:05:42.202998
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '70af5a4e5790'
+down_revision = '47294d3a604'
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ with op.batch_alter_table('mailinglist') as batch_op:
+ batch_op.alter_column('digestable', new_column_name='digests_enabled')
+ batch_op.drop_column('nondigestable')
+
+
+def downgrade():
+ with op.batch_alter_table('mailinglist') as batch_op:
+ batch_op.alter_column('digests_enabled', new_column_name='digestable')
+ # The data for this column is lost, it's not used anyway.
+ batch_op.add_column(sa.Column('nondigestable', sa.Boolean))
diff --git a/src/mailman/database/tests/test_migrations.py b/src/mailman/database/tests/test_migrations.py
index 823c94652..e3f4b9581 100644
--- a/src/mailman/database/tests/test_migrations.py
+++ b/src/mailman/database/tests/test_migrations.py
@@ -169,3 +169,30 @@ class TestMigrations(unittest.TestCase):
self.assertNotIn('type', results[i])
self.assertEqual(results[4]['type'], '"held message"')
self.assertEqual(results[5]['type'], '"registration"')
+
+ def test_70af5a4e5790_digests(self):
+ IDS_TO_DIGESTABLE = [
+ (1, True),
+ (2, False),
+ (3, False),
+ (4, True),
+ ]
+ mlist_table = sa.sql.table(
+ 'mailinglist',
+ sa.sql.column('id', sa.Integer),
+ sa.sql.column('digests_enabled', sa.Boolean)
+ )
+ # Downgrading.
+ for table_id, enabled in IDS_TO_DIGESTABLE:
+ config.db.store.execute(mlist_table.insert().values(
+ id=table_id, digests_enabled=enabled))
+ config.db.store.commit()
+ alembic.command.downgrade(alembic_cfg, '47294d3a604')
+ results = config.db.store.execute(
+ 'SELECT id, digestable FROM mailinglist').fetchall()
+ self.assertEqual(results, IDS_TO_DIGESTABLE)
+ # Upgrading.
+ alembic.command.upgrade(alembic_cfg, '70af5a4e5790')
+ results = config.db.store.execute(
+ 'SELECT id, digests_enabled FROM mailinglist').fetchall()
+ self.assertEqual(results, IDS_TO_DIGESTABLE)