From 7b6e26183f33e3cabfcc068c4a7820a79485a889 Mon Sep 17 00:00:00 2001 From: klemek Date: Sun, 6 Sep 2020 14:28:41 +0200 Subject: [PATCH] guild join/remove unit tests --- miniscord/_bot.py | 2 +- tests/unit/miniscord/test_bot.py | 70 ++++++++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/miniscord/_bot.py b/miniscord/_bot.py index c6ed49c..42843d0 100644 --- a/miniscord/_bot.py +++ b/miniscord/_bot.py @@ -35,7 +35,7 @@ class Bot(object): self.alias = alias # can call bot with {alias}{command_name} self.any_mention = False # bot mention can be anywhere self.log_calls = False - self.guild_logs_file = "../guilds.log" + self.guild_logs_file = "guilds.log" self.enforce_write_permission = True self.lower_command_names = True self.game_change_delay = 10 diff --git a/tests/unit/miniscord/test_bot.py b/tests/unit/miniscord/test_bot.py index 399f0cb..7665d85 100644 --- a/tests/unit/miniscord/test_bot.py +++ b/tests/unit/miniscord/test_bot.py @@ -1,5 +1,7 @@ from unittest import TestCase, skip from unittest.mock import AsyncMock +from os import path +import os from tests.utils import AsyncTestCase, patch_discord import discord @@ -147,30 +149,80 @@ class TestOnReady(AsyncTestCase): class TestOnGuildJoin(AsyncTestCase): + LOG_PATH = "guilds.log" + + def setUp(self): + super().setUp() + if path.exists(self.LOG_PATH): + os.remove(self.LOG_PATH) + + def tearDown(self): + super().tearDown() + if path.exists(self.LOG_PATH): + os.remove(self.LOG_PATH) + @patch_discord def test_no_log(self): bot = Bot("app_name", "version") bot.guild_logs_file = None guild = AsyncMock() self._await(bot.on_guild_join(guild)) - # nothing - # TODO test normal file path + self.assertFalse(path.exists(self.LOG_PATH)) - @skip + @patch_discord def test_log(self): - self.fail("not implemented") + bot = Bot("app_name", "version") + bot.guild_logs_file = self.LOG_PATH + guild1 = AsyncMock() + guild1.id = "id1" + guild1.name = "name1" + guild2 = AsyncMock() + guild2.id = "id2" + guild2.name = "name2" + d = datetime.now() + self._await(bot.on_guild_join(guild1)) + self._await(bot.on_guild_join(guild2)) + self.assertTrue(path.exists(self.LOG_PATH)) + with open(self.LOG_PATH, encoding="utf-8", mode="r") as f: + self.assertEqual(f"{d:%Y-%m-%d %H:%M} +id1: name1\n" + f"{d:%Y-%m-%d %H:%M} +id2: name2\n", f.read()) class TestOnGuildRemove(AsyncTestCase): + LOG_PATH = "guilds.log" + + def setUp(self): + super().setUp() + if path.exists(self.LOG_PATH): + os.remove(self.LOG_PATH) + + def tearDown(self): + super().tearDown() + if path.exists(self.LOG_PATH): + os.remove(self.LOG_PATH) + @patch_discord def test_no_log(self): bot = Bot("app_name", "version") bot.guild_logs_file = None guild = AsyncMock() - self._await(bot.on_guild_remove(guild)) - # nothing - # TODO test normal file path + self._await(bot.on_guild_join(guild)) + self.assertFalse(path.exists(self.LOG_PATH)) - @skip + @patch_discord def test_log(self): - self.fail("not implemented") + bot = Bot("app_name", "version") + bot.guild_logs_file = self.LOG_PATH + guild1 = AsyncMock() + guild1.id = "id1" + guild1.name = "name1" + guild2 = AsyncMock() + guild2.id = "id2" + guild2.name = "name2" + d = datetime.now() + self._await(bot.on_guild_remove(guild1)) + self._await(bot.on_guild_remove(guild2)) + self.assertTrue(path.exists(self.LOG_PATH)) + with open(self.LOG_PATH, encoding="utf-8", mode="r") as f: + self.assertEqual(f"{d:%Y-%m-%d %H:%M} -id1: name1\n" + f"{d:%Y-%m-%d %H:%M} -id2: name2\n", f.read())