diff options
| author | Aurélien Bompard | 2016-02-10 13:59:50 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2016-03-31 18:29:27 -0400 |
| commit | e622e265f1570ff9128aa1b5e4c7f326dc367994 (patch) | |
| tree | bd6517c3a4e46e466073bb5b96a7aed6aa8901cb /src/mailman/database/tests/test_migrations.py | |
| parent | 71cfeda5fb51c49fd87b6d34e00221a3725b9ec0 (diff) | |
| download | mailman-e622e265f1570ff9128aa1b5e4c7f326dc367994.tar.gz mailman-e622e265f1570ff9128aa1b5e4c7f326dc367994.tar.zst mailman-e622e265f1570ff9128aa1b5e4c7f326dc367994.zip | |
Diffstat (limited to 'src/mailman/database/tests/test_migrations.py')
| -rw-r--r-- | src/mailman/database/tests/test_migrations.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/mailman/database/tests/test_migrations.py b/src/mailman/database/tests/test_migrations.py index 3087c46ee..bc394149b 100644 --- a/src/mailman/database/tests/test_migrations.py +++ b/src/mailman/database/tests/test_migrations.py @@ -218,3 +218,70 @@ class TestMigrations(unittest.TestCase): os.path.join(config.LIST_DATA_DIR, 'ant@example.com'))) self.assertTrue(os.path.exists(ant.data_path)) self.assertTrue(os.path.exists(bee.data_path)) + + def test_7b254d88f122_moderation_action(self): + from mailman.database.types import Enum + from mailman.interfaces.action import Action + from mailman.interfaces.member import MemberRole + from mailman.interfaces.usermanager import IUserManager + from zope.component import getUtility + mailinglist_table = sa.sql.table( + 'mailinglist', + sa.sql.column('id', sa.Integer), + sa.sql.column('list_id', sa.Unicode), + sa.sql.column('default_member_action', Enum(Action)), + sa.sql.column('default_nonmember_action', Enum(Action)), + ) + + member_table = sa.sql.table( + 'member', + sa.sql.column('id', sa.Integer), + sa.sql.column('list_id', sa.Unicode), + sa.sql.column('address_id', sa.Integer), + sa.sql.column('role', Enum(MemberRole)), + sa.sql.column('moderation_action', Enum(Action)), + ) + user_manager = getUtility(IUserManager) + with transaction(): + # Start at the previous revision + alembic.command.downgrade(alembic_cfg, 'd4fbb4fd34ca') + # Create a mailing list through the standard API. + ant = create_list('ant@example.com') + # Create members + anne = user_manager.create_address('anne@example.com') + bart = user_manager.create_address('bart@example.com') + cris = user_manager.create_address('cris@example.com') + dana = user_manager.create_address('dana@example.com') + config.db.store.flush() # to get the last auto-increment id. + config.db.store.execute(member_table.insert().values([ + {'address_id': anne.id, 'role': MemberRole.owner, + 'list_id': ant.list_id, 'moderation_action': Action.accept}, + {'address_id': bart.id, 'role': MemberRole.moderator, + 'list_id': ant.list_id, 'moderation_action': Action.accept}, + {'address_id': cris.id, 'role': MemberRole.member, + 'list_id': ant.list_id, 'moderation_action': Action.defer}, + {'address_id': dana.id, 'role': MemberRole.nonmember, + 'list_id': ant.list_id, 'moderation_action': Action.hold}, + ])) + # Upgrade and check the moderation_action. + alembic.command.upgrade(alembic_cfg, '7b254d88f122') + members = config.db.store.execute(sa.select([ + member_table.c.address_id, member_table.c.moderation_action, + ])).fetchall() + self.assertEqual(members, [ + (anne.id, Action.accept), + (bart.id, Action.accept), + (cris.id, None), + (dana.id, None), + ]) + # Downgrade and check. + alembic.command.downgrade(alembic_cfg, 'd4fbb4fd34ca') + members = config.db.store.execute(sa.select([ + member_table.c.address_id, member_table.c.moderation_action, + ])).fetchall() + self.assertEqual(members, [ + (anne.id, Action.accept), + (bart.id, Action.accept), + (cris.id, Action.defer), + (dana.id, Action.hold), + ]) |
