test_migrationutils.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. from django.apps import apps
  2. from django.test import TestCase
  3. from misago.conf import migrationutils
  4. from misago.conf.models import SettingsGroup
  5. from misago.core import threadstore
  6. class DBConfMigrationUtilsTests(TestCase):
  7. def setUp(self):
  8. self.test_group = {
  9. 'key':
  10. 'test_group',
  11. 'name':
  12. "Test settings",
  13. 'description':
  14. "Those are test settings.",
  15. 'settings': [
  16. {
  17. 'setting': 'fish_name',
  18. 'name': "Fish's name",
  19. 'value': "Eric",
  20. 'field_extra': {
  21. 'min_length': 2,
  22. 'max_length': 255,
  23. },
  24. },
  25. {
  26. 'setting': 'fish_license_no',
  27. 'name': "Fish's license number",
  28. 'default_value': '123-456',
  29. 'field_extra': {
  30. 'max_length': 255,
  31. },
  32. },
  33. ],
  34. }
  35. migrationutils.migrate_settings_group(apps, self.test_group)
  36. self.groups_count = SettingsGroup.objects.count()
  37. def tearDown(self):
  38. threadstore.clear()
  39. def test_get_custom_group_and_settings(self):
  40. """tests setup created settings group"""
  41. custom_group = migrationutils.get_group(
  42. apps.get_model('misago_conf', 'SettingsGroup'), self.test_group['key']
  43. )
  44. self.assertEqual(custom_group.key, self.test_group['key'])
  45. self.assertEqual(custom_group.name, self.test_group['name'])
  46. self.assertEqual(custom_group.description, self.test_group['description'])
  47. custom_settings = migrationutils.get_custom_settings_values(custom_group)
  48. self.assertEqual(custom_settings['fish_name'], 'Eric')
  49. self.assertTrue('fish_license_no' not in custom_settings)
  50. def test_change_group_key(self):
  51. """migrate_settings_group changed group key"""
  52. new_group = {
  53. 'key':
  54. 'new_test_group',
  55. 'name':
  56. "New test settings",
  57. 'description':
  58. "Those are updated test settings.",
  59. 'settings': [
  60. {
  61. 'setting': 'fish_new_name',
  62. 'name': "Fish's new name",
  63. 'value': "Eric",
  64. 'field_extra': {
  65. 'min_length': 2,
  66. 'max_length': 255,
  67. },
  68. },
  69. {
  70. 'setting': 'fish_new_license_no',
  71. 'name': "Fish's changed license number",
  72. 'default_value': '123-456',
  73. 'field_extra': {
  74. 'max_length': 255,
  75. },
  76. },
  77. ],
  78. }
  79. migrationutils.migrate_settings_group(
  80. apps, new_group, old_group_key=self.test_group['key']
  81. )
  82. db_group = migrationutils.get_group(
  83. apps.get_model('misago_conf', 'SettingsGroup'), new_group['key']
  84. )
  85. self.assertEqual(SettingsGroup.objects.count(), self.groups_count)
  86. self.assertEqual(db_group.key, new_group['key'])
  87. self.assertEqual(db_group.name, new_group['name'])
  88. self.assertEqual(db_group.description, new_group['description'])
  89. for setting in new_group['settings']:
  90. db_setting = db_group.setting_set.get(setting=setting['setting'])
  91. self.assertEqual(db_setting.name, setting['name'])