123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- from src.settings import settings
- from src.settings_manager import settings_manager
- from validator import validator
- import unittest, os, random
-
- class test_settings(unittest.TestCase):
- projdir = os.path.dirname(__file__) + "/.."
-
-
- def first_name_setter(self):
- """Проверить корректность заполнения поля first_name"""
- # Подготовка
- item = settings()
-
- # Действие
- item.first_name = "a "
-
- # Проверка
- assert item.first_name == "a"
- def settings_manager_singleton(self):
- """Проверить, что settings_manager имплементирует singleton"""
- # Подготовка
- man1 = settings_manager()
- man2 = settings_manager()
- # Действие
- # Проверка
- assert man1 is man2
- def open_settings(self):
- """Проверить корректность загрузки настроек"""
- # Подготовка
- man = settings_manager()
-
- # Действие
- result = man.open(f"{self.projdir}/config/settings.json")
- # Проверка
- assert result == True
- def settings_fields_nonempty(self):
- """Проверить, что все поля настроек не пусты после считывания настроек"""
- # Подготовка
- man = settings_manager()
- settings = None
- # Действие
- man.open(f"{self.projdir}/config/settings.json")
- settings = man.settings
- dict = settings.__dict__
- # Проверка
- for key in dict.keys():
- assert len(str(dict[key])) != 0
-
- def settings_any_filename(self):
- """Проверить, что менеджер настроек может открыть файл с любым названием и в любой папке"""
- # Подготовка
- if not os.path.exists(f"{self.projdir}/.test_data"):
- os.mkdir(f"{self.projdir}/.test_data")
- alp = "abcdefghijklmnopqrstuvwxyz"
- dirname = f"{self.projdir}/.test_data/"
- dirname += ''.join(random.choice(alp) for _ in range(6))
- filename = f"{dirname}/"
- filename += ''.join(random.choice(alp) for _ in range(6)) + ".json"
- os.mkdir(dirname)
- print(filename)
- f = open(filename, "w", encoding="UTF-8")
- f2 = open(f"{self.projdir}/config/settings.json", encoding="UTF-8")
- f.write(f2.read())
- f.close()
- f2.close()
- # Действие
- man = settings_manager()
- man.open(filename)
- # Проверка
- assert settings is not None
- # Очистка
- os.remove(filename)
- os.removedirs(dirname)
- def settings_validator_typeguard(self):
- """Проверить работоспособность settings_validation.check_type()"""
- # Подготовка
- validator = validator()
- # Действие
- # Проверка
- assert validator.check_type("", str)
- self.assertRaises(TypeError, lambda: validator.check_type("", int))
- def settings_validator_len_exact(self):
- """Проверить работоспособность settings_validator.check_length()"""
- # Подготовка
- validator = validator()
- # Действие
- # Проверка
- assert validator.check_length("aa", 2)
- self.assertRaises(ValueError, lambda: validator.check_length("aa", 1))
- self.assertRaises(ValueError, lambda: validator.check_length("aa", 3))
- def settings_validator_len_int(self):
- """Проверить работоспособность settings_validator.check_length() при передаче int"""
- # Подготовка
- validator = validator()
- # Действие
- # Проверка
- assert validator.check_length(10, 2)
- self.assertRaises(ValueError, lambda: validator.check_length(10, 1))
- self.assertRaises(ValueError, lambda: validator.check_length(10, 3))
- def settings_validator_len_bound(self):
- """Проверить работоспособность settings_validator.check_length_bound()"""
- # Подготовка
- validator = validator()
- # Действие
- # Проверка
- # Вхождение в минимум
- assert validator.check_length_bound("abc", 3, 10)
- # Вхождение в максимум
- assert validator.check_length_bound("abc", 1, 3)
- # Невхождение в максимум
- self.assertRaises(ValueError, lambda: validator.check_length_bound("abc", 1, 2))
- # Невхождение в минимум
- self.assertRaises(ValueError, lambda: validator.check_length_bound("abc", 4, 5))
- # Невхождение в исключительный минимум
- self.assertRaises(ValueError, lambda: validator.check_length_bound("abc", 3, 5, inclusive_min=False))
- # Невхождение в исключительный максимум
- self.assertRaises(ValueError, lambda: validator.check_length_bound("abc", 1, 3, inclusive_max=False))
- def settings_validator_regex(self):
- """Проверить работоспособность settings_validator.check_regex()"""
- # Подготовка
- validator = validator()
- # Действие
- # Проверка
- assert validator.check_regex("abc", ".*b[c]+")
- self.assertRaises(ValueError, lambda: validator.check_regex("abc", ".*b[c]+[a]+"))
|