diff options
| author | J08nY | 2017-07-05 01:07:37 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-07 18:18:00 +0200 |
| commit | 6c621405c88671a58ef24cd84a9bd74ca324207e (patch) | |
| tree | 80f516f151951fb4803b040adfb3aad79995c45d /src/mailman/database/tests/test_migrations.py | |
| parent | 26f31b20c3cad6217f38ce8ded63c73da66ff3f8 (diff) | |
| download | mailman-6c621405c88671a58ef24cd84a9bd74ca324207e.tar.gz mailman-6c621405c88671a58ef24cd84a9bd74ca324207e.tar.zst mailman-6c621405c88671a58ef24cd84a9bd74ca324207e.zip | |
Diffstat (limited to 'src/mailman/database/tests/test_migrations.py')
| -rw-r--r-- | src/mailman/database/tests/test_migrations.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mailman/database/tests/test_migrations.py b/src/mailman/database/tests/test_migrations.py index 5b686d13b..104487350 100644 --- a/src/mailman/database/tests/test_migrations.py +++ b/src/mailman/database/tests/test_migrations.py @@ -32,10 +32,13 @@ from mailman.database.transaction import transaction from mailman.database.types import Enum, SAUnicode from mailman.interfaces.action import Action from mailman.interfaces.cache import ICacheManager +from mailman.interfaces.mailinglist import SubscriptionPolicy from mailman.interfaces.member import MemberRole from mailman.interfaces.template import ITemplateManager from mailman.interfaces.usermanager import IUserManager from mailman.testing.layers import ConfigLayer +from mailman.workflows.subscription import ModerationSubscriptionPolicy +from mailman.workflows.unsubscription import OpenUnsubscriptionPolicy from warnings import catch_warnings, simplefilter from zope.component import getUtility @@ -594,3 +597,54 @@ class TestMigrations(unittest.TestCase): self.assertEqual(token, 'abcde') self.assertEqual(step, None) self.assertEqual(data, 'another data') + + def test_ccb9e28c44f4_mailinglist_sub_unsub_policies_downgrade(self): + # Downgrade to the tested revision. + alembic.command.downgrade(alembic_cfg, 'ccb9e28c44f4') + # Create our example list. + with transaction(): + mlist = create_list('test@example.com') + mlist.subscription_policy = ModerationSubscriptionPolicy + mlist.unsubscription_policy = OpenUnsubscriptionPolicy + # Downgrade, should keep the policies, since they have a value in the + # SubscriptionPolicy enum. + alembic.command.downgrade(alembic_cfg, '7c5b39d1ecc4') + old_mlist_table = sa.sql.table( + 'mailinglist', + sa.sql.column('id', sa.Integer), + sa.sql.column('subscription_policy', sa.Integer), + sa.sql.column('unsubscription_policy', sa.Integer) + ) + table_id, sub_policy, unsub_policy = config.db.store.execute( + old_mlist_table.select()).fetchone() + self.assertEqual(sub_policy, SubscriptionPolicy.moderate.value) + self.assertEqual(unsub_policy, SubscriptionPolicy.open.value) + + def test_ccb9e28c44f4_mailinglist_sub_unsub_policies_upgrade(self): + old_mlist_table = sa.sql.table( + 'mailinglist', + sa.sql.column('id', sa.Integer), + sa.sql.column('subscription_policy', sa.Integer), + sa.sql.column('unsubscription_policy', sa.Integer) + ) + with transaction(): + # Downgrade to a revision below the one tested. + alembic.command.downgrade(alembic_cfg, '7c5b39d1ecc4') + + config.db.store.execute( + old_mlist_table.insert().values( + subscription_policy=SubscriptionPolicy.moderate.value, + unsubscription_policy=SubscriptionPolicy.open.value) + ) + # Upgrade and test that the new names and types are there. + alembic.command.upgrade(alembic_cfg, 'ccb9e28c44f4') + new_mlist_table = sa.sql.table( + 'mailinglist', + sa.sql.column('id', sa.Integer), + sa.sql.column('subscription_policy', SAUnicode), + sa.sql.column('unsubscription_policy', SAUnicode) + ) + table_id, sub_policy, unsub_policy = config.db.store.execute( + new_mlist_table.select()).fetchone() + self.assertEqual(sub_policy, ModerationSubscriptionPolicy.name) + self.assertEqual(unsub_policy, OpenUnsubscriptionPolicy.name) |
