test_settings.py 2.8 KB

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