mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
import logging
|
|
from io import StringIO
|
|
from unittest.mock import patch
|
|
from model_data.utils import setup_logger, is_percentage_or_number, correct_spelling
|
|
|
|
|
|
class TestLogger:
|
|
def test_setup_logger_default(self):
|
|
log_stream = StringIO()
|
|
handler = logging.StreamHandler(log_stream)
|
|
logger = setup_logger()
|
|
logger.addHandler(handler)
|
|
|
|
# log something
|
|
logger.info("Hello World!")
|
|
|
|
log_stream.seek(0)
|
|
# assert that log was written
|
|
assert log_stream.read() == "Hello World!\n"
|
|
# remove the handler after use
|
|
logger.removeHandler(handler)
|
|
|
|
@patch('logging.FileHandler')
|
|
def test_setup_logger_file(self, mock_file_handler):
|
|
# setup the logger
|
|
logger = setup_logger(log_file='test.log', overwrite_handler=True)
|
|
|
|
# assert FileHandler was called correctly
|
|
mock_file_handler.assert_called_once_with('test.log')
|
|
|
|
# clean up after use
|
|
for handler in logger.handlers[:]:
|
|
handler.close()
|
|
logger.removeHandler(handler)
|
|
|
|
def test_setup_logger_loglevel(self):
|
|
log_stream = StringIO()
|
|
handler = logging.StreamHandler(log_stream)
|
|
logger = setup_logger(level=logging.DEBUG)
|
|
logger.addHandler(handler)
|
|
|
|
# log something
|
|
logger.debug("Hello World!")
|
|
|
|
log_stream.seek(0)
|
|
# assert that log was written
|
|
assert log_stream.read() == "Hello World!\n"
|
|
# remove the handler after use
|
|
logger.removeHandler(handler)
|
|
|
|
def test_is_percentage_or_number(self):
|
|
assert is_percentage_or_number("88")
|
|
assert is_percentage_or_number("88%")
|
|
assert not is_percentage_or_number("abc")
|
|
assert not is_percentage_or_number("")
|
|
assert not is_percentage_or_number("88.0") # only integer numbers or percentages
|
|
assert is_percentage_or_number("101%") # numbers over 100 allowed
|
|
assert not is_percentage_or_number("-1") # negative numbers not allowed
|
|
|
|
def test_correct_spelling(self):
|
|
assert correct_spelling("speling") == "spelling"
|
|
assert correct_spelling("88") == "88" # numbers are left unchanged
|
|
assert correct_spelling("corerct") == "correct"
|
|
assert correct_spelling("excllent") == "excellent"
|
|
assert correct_spelling("") == "" # empty string should return an empty string
|
|
assert correct_spelling("88%") == "88%" # percentages are left unchanged
|