announcement-bot/bot/tests.py

81 lines
2.4 KiB
Python
Raw Normal View History

import unittest
2023-04-26 05:14:02 +00:00
import zoneinfo
from datetime import datetime
import os
import database
2023-04-26 05:14:02 +00:00
from model import WatchGuild, WatchChannel, WatchUser, WatchMessage
class TestMessageParsing(unittest.TestCase):
pass
2023-04-26 05:14:02 +00:00
class TestGuilds(unittest.TestCase):
dbname = 'test.db'
get_guilds_stmt = 'SELECT guild_id, name FROM guilds'
testguilds = [WatchGuild(1000, 'test1', None),
WatchGuild(2000, 'test2', None),
WatchGuild(3000, 'test3', None)]
def setUp(self):
self.db = database.DatabaseManager(self.dbname)
for g in self.testguilds:
self.db.create_guild(g)
def test_get_all_guilds(self):
guilds = self.db.get_guild()
self.assertTrue(len(guilds) == len(self.testguilds))
def test_get_guild_by_id(self):
guilds = self.db.get_guild(id=2000)
self.assertTrue(len(guilds) == 1)
def test_get_guild_by_name(self):
guilds = self.db.get_guild(name='test1')
self.assertTrue(len(guilds) == 1)
def test_get_multiple_guilds_by_name(self):
new_guild = WatchGuild(1001, 'test1', None)
self.db.create_guild(new_guild)
guilds = self.db.get_guild(name='test1')
self.assertTrue(len(guilds) == 2)
def test_get_guild_with_nonsense_params(self):
guilds = self.db.get_guild(bleep='bloop')
self.assertTrue(len(guilds) == 0)
def test_new_guild_add(self):
with self.db.conn:
existing = self.db.conn.execute(self.get_guilds_stmt).fetchall()
guild = WatchGuild(4000, 'test4',
datetime.now(tz=zoneinfo.ZoneInfo('UTC')))
self.db.create_guild(guild)
new = self.db.conn.execute(self.get_guilds_stmt).fetchall()
self.assertTrue(len(new) == len(existing) + 1)
def tearDown(self):
if os.path.exists(self.dbname):
os.remove(self.dbname)
class TestDatabase(unittest.TestCase):
dbname = 'test.db'
2023-04-26 05:14:02 +00:00
get_guilds_stmt = 'SELECT guild_id, name FROM guilds'
def setUp(self):
if os.path.exists(self.dbname):
os.remove(self.dbname)
def test_database_init(self):
2023-04-26 05:14:02 +00:00
db = database.DatabaseManager(self.dbname)
with db.conn:
2023-04-26 05:14:02 +00:00
cur = db.conn.execute(self.get_guilds_stmt)
self.assertTrue(len(cur.fetchall()) == 0)
def tearDown(self):
os.remove(self.dbname)
if __name__ == "__main__":
unittest.main()