test_settings.py 2.8 KB

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