diff --git a/dbot/db.py b/dbot/db.py index e72bc6d..7ba662f 100644 --- a/dbot/db.py +++ b/dbot/db.py @@ -192,9 +192,13 @@ class DiscordDB: if channel_id in self.get_kind_notification_channel_ids(kind): logger.warning(f"removing channel with id {channel_id}") self.channel.delete_where("kind = ? and channel_id = ?", (kind, channel_id)) + self.remove_role_mappings(channel_id) return True return False + def remove_role_mappings(self, channel_id: int): + return self.role_mapping.delete_where("channel_id = ?", (channel_id, )) + def add_role_mapping_entry(self, channel_id: int, division: int, role_id: int) -> bool: if division not in (1, 2, 3, 4, 11): return False diff --git a/dbot/tests.py b/dbot/tests.py index b6b91f7..8038093 100644 --- a/dbot/tests.py +++ b/dbot/tests.py @@ -49,8 +49,17 @@ class TestDatabase(unittest.TestCase): self.assertTrue(self.db.add_notification_channel(13, 16, "epic")) self.assertFalse(self.db.add_notification_channel(13, 16, "epic")) self.assertListEqual(self.db.get_kind_notification_channel_ids("epic"), [16]) + self.assertFalse(self.db.add_role_mapping_entry(16, 5, 160003)) + self.assertTrue(self.db.add_role_mapping_entry(16, 3, 160003)) + self.assertTrue(self.db.add_role_mapping_entry(16, 4, 160003)) + self.assertTrue(self.db.add_role_mapping_entry(16, 4, 160004)) + self.assertEqual(self.db.get_role_id_for_channel_division(16, 3), 160003) + self.assertEqual(self.db.get_role_id_for_channel_division(16, 4), 160004) self.assertTrue(self.db.remove_kind_notification_channel("epic", 16)) self.assertFalse(self.db.remove_kind_notification_channel("epic", 16)) + self.assertFalse(self.db.get_role_id_for_channel_division(16, 3)) + self.assertFalse(self.db.get_role_id_for_channel_division(16, 4)) + self.assertFalse(self.db.get_role_id_for_channel_division(16, 5)) class TestRegexes(unittest.TestCase):