test_migrationutils.py 3.5 KB

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