1
1

test_settings.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from src.settings.settings import settings
  2. from src.settings.settings_manager import settings_manager
  3. import unittest, os, random
  4. class test_settings(unittest.TestCase):
  5. projdir = os.path.dirname(__file__) + "/.."
  6. def test_first_name_setter(self):
  7. """Проверить корректность заполнения поля first_name"""
  8. # Подготовка
  9. item = settings()
  10. # Действие
  11. item.first_name = "a "
  12. # Проверка
  13. assert item.first_name == "a"
  14. def test_settings_manager_singleton(self):
  15. """Проверить, что settings_manager имплементирует singleton"""
  16. # Подготовка
  17. man1 = settings_manager()
  18. man2 = settings_manager()
  19. # Действие
  20. # Проверка
  21. assert man1 is man2
  22. def test_open_settings(self):
  23. """Проверить корректность загрузки настроек"""
  24. # Подготовка
  25. man = settings_manager()
  26. # Действие
  27. result = man.open(f"{self.projdir}/config/settings.json")
  28. # Проверка
  29. assert result == True
  30. def test_settings_fields_nonempty(self):
  31. """Проверить, что все поля настроек не пусты после считывания настроек"""
  32. # Подготовка
  33. man = settings_manager()
  34. settings = None
  35. # Действие
  36. man.open(f"{self.projdir}/config/settings.json")
  37. settings = man.settings
  38. dict = settings.__dict__
  39. # Проверка
  40. for key in dict.keys():
  41. assert len(str(dict[key])) != 0
  42. def test_settings_any_filename(self):
  43. """Проверить, что менеджер настроек может открыть файл с любым названием и в любой папке"""
  44. # Подготовка
  45. if not os.path.exists(f"{self.projdir}/.test_data"):
  46. os.mkdir(f"{self.projdir}/.test_data")
  47. alp = "abcdefghijklmnopqrstuvwxyz"
  48. dirname = f"{self.projdir}/.test_data/"
  49. dirname += ''.join(random.choice(alp) for _ in range(6))
  50. filename = f"{dirname}/"
  51. filename += ''.join(random.choice(alp) for _ in range(6)) + ".json"
  52. os.mkdir(dirname)
  53. print(filename)
  54. f = open(filename, "w", encoding="UTF-8")
  55. f2 = open(f"{self.projdir}/config/settings.json", encoding="UTF-8")
  56. f.write(f2.read())
  57. f.close()
  58. f2.close()
  59. # Действие
  60. man = settings_manager()
  61. man.open(filename)
  62. # Проверка
  63. assert settings is not None
  64. # Очистка
  65. os.remove(filename)
  66. os.removedirs(dirname)