test_settings.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. from django.apps import apps
  2. from django.conf import settings as dj_settings
  3. from django.test import TestCase
  4. from misago.core import threadstore
  5. from misago.core.cache import cache
  6. from misago.conf.gateway import settings as gateway
  7. from misago.conf.dbsettings import db_settings
  8. from misago.conf.migrationutils import migrate_settings_group
  9. class DBSettingsTests(TestCase):
  10. def test_get_existing_setting(self):
  11. """forum_name is defined"""
  12. self.assertEqual(db_settings.forum_name, 'Misago')
  13. with self.assertRaises(AttributeError):
  14. db_settings.MISAGO_MAILER_BATCH_SIZE
  15. class GatewaySettingsTests(TestCase):
  16. def tearDown(self):
  17. cache.clear()
  18. threadstore.clear()
  19. def test_get_existing_setting(self):
  20. """forum_name is defined"""
  21. self.assertEqual(gateway.forum_name, db_settings.forum_name)
  22. self.assertEqual(gateway.MISAGO_MAILER_BATCH_SIZE,
  23. dj_settings.MISAGO_MAILER_BATCH_SIZE)
  24. with self.assertRaises(AttributeError):
  25. gateway.LoremIpsum
  26. def test_setting_public(self):
  27. """get_public_settings returns public settings"""
  28. test_group = {
  29. 'key': 'test_group',
  30. 'name': "Test settings",
  31. 'description': "Those are test settings.",
  32. 'settings': (
  33. {
  34. 'setting': 'fish_name',
  35. 'name': "Fish's name",
  36. 'value': "Public Eric",
  37. 'field_extra': {
  38. 'min_length': 2,
  39. 'max_length': 255
  40. },
  41. 'is_public': True
  42. },
  43. {
  44. 'setting': 'private_fish_name',
  45. 'name': "Fish's name",
  46. 'value': "Private Eric",
  47. 'field_extra': {
  48. 'min_length': 2,
  49. 'max_length': 255
  50. },
  51. 'is_public': False
  52. },
  53. )
  54. }
  55. migrate_settings_group(apps, test_group)
  56. self.assertEqual(gateway.fish_name, 'Public Eric')
  57. self.assertEqual(gateway.private_fish_name, 'Private Eric')
  58. public_settings = gateway.get_public_settings().keys()
  59. self.assertIn('fish_name', public_settings)
  60. self.assertNotIn('private_fish_name', public_settings)
  61. def test_setting_lazy(self):
  62. """lazy settings work"""
  63. test_group = {
  64. 'key': 'test_group',
  65. 'name': "Test settings",
  66. 'description': "Those are test settings.",
  67. 'settings': (
  68. {
  69. 'setting': 'fish_name',
  70. 'name': "Fish's name",
  71. 'value': "Greedy Eric",
  72. 'field_extra': {
  73. 'min_length': 2,
  74. 'max_length': 255
  75. },
  76. 'is_lazy': False
  77. },
  78. {
  79. 'setting': 'lazy_fish_name',
  80. 'name': "Fish's name",
  81. 'value': "Lazy Eric",
  82. 'field_extra': {
  83. 'min_length': 2,
  84. 'max_length': 255
  85. },
  86. 'is_lazy': True
  87. },
  88. {
  89. 'setting': 'lazy_empty_setting',
  90. 'name': "Fish's name",
  91. 'field_extra': {
  92. 'min_length': 2,
  93. 'max_length': 255
  94. },
  95. 'is_lazy': True
  96. },
  97. )
  98. }
  99. migrate_settings_group(apps, test_group)
  100. self.assertTrue(gateway.lazy_fish_name)
  101. self.assertTrue(db_settings.lazy_fish_name)
  102. self.assertTrue(gateway.lazy_fish_name)
  103. self.assertEqual(
  104. gateway.get_lazy_setting('lazy_fish_name'), 'Lazy Eric')
  105. self.assertTrue(db_settings.lazy_fish_name)
  106. self.assertEqual(
  107. db_settings.get_lazy_setting('lazy_fish_name'), 'Lazy Eric')
  108. self.assertTrue(gateway.lazy_empty_setting is None)
  109. self.assertTrue(db_settings.lazy_empty_setting is None)
  110. with self.assertRaises(ValueError):
  111. db_settings.get_lazy_setting('fish_name')