Files
DicePlayer/tests/shared/utils/test_logger.py

115 lines
3.1 KiB
Python

from diceplayer.shared.utils.logger import Logger, valid_logger
import logging
from unittest import mock
import unittest
class TestValidateLogger(unittest.TestCase):
def test_validate_logger(self):
class MockLogger:
_was_set = True
@valid_logger
def test_func(self):
pass
MockLogger().test_func()
def test_validate_logger_exception(self):
class MockLogger:
_was_set = False
@valid_logger
def test_func(self):
pass
with self.assertRaises(AssertionError):
MockLogger().test_func()
class TestLogger(unittest.TestCase):
def test_class_instantiation(self):
logger = Logger('test')
self.assertIsInstance(logger, Logger)
@mock.patch('builtins.open', mock.mock_open())
@mock.patch('diceplayer.shared.utils.logger.Path.exists')
@mock.patch('diceplayer.shared.utils.logger.Path.rename')
def test_set_logger_if_file_exists(self, mock_rename, mock_exists):
logger = Logger('test')
mock_exists.return_value = True
logger.set_logger()
self.assertTrue(mock_rename.called)
self.assertIsNotNone(logger._logger)
self.assertEqual(logger._logger.name, 'test')
@mock.patch('builtins.open', mock.mock_open())
@mock.patch('diceplayer.shared.utils.logger.Path.exists')
@mock.patch('diceplayer.shared.utils.logger.Path.rename')
def test_set_logger_if_file_not_exists(self, mock_rename, mock_exists):
logger = Logger('test')
mock_exists.return_value = False
logger.set_logger()
self.assertFalse(mock_rename.called)
self.assertIsNotNone(logger._logger)
self.assertEqual(logger._logger.name, 'test')
@mock.patch('builtins.open', mock.mock_open())
def test_close(self):
logger = Logger('test')
logger.set_logger()
logger.close()
self.assertEqual(len(logger._logger.handlers), 0)
@mock.patch('builtins.open', mock.mock_open())
def test_info(self):
logger = Logger('test')
logger.set_logger()
with self.assertLogs(level='INFO') as cm:
logger.info('test')
self.assertEqual(cm.output, ['INFO:test:test'])
@mock.patch('builtins.open', mock.mock_open())
def test_debug(self):
logger = Logger('test')
logger.set_logger(level=logging.DEBUG)
with self.assertLogs(level='DEBUG') as cm:
logger.debug('test')
self.assertEqual(cm.output, ['DEBUG:test:test'])
@mock.patch('builtins.open', mock.mock_open())
def test_warning(self):
logger = Logger('test')
logger.set_logger()
with self.assertLogs(level='WARNING') as cm:
logger.warning('test')
self.assertEqual(cm.output, ['WARNING:test:test'])
@mock.patch('builtins.open', mock.mock_open())
def test_error(self):
logger = Logger('test')
logger.set_logger()
with self.assertLogs(level='ERROR') as cm:
logger.error('test')
self.assertEqual(cm.output, ['ERROR:test:test'])
if __name__ == '__main__':
unittest.main()