test_settings.py 4.4 KB

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