test_migrationutils.py 3.1 KB

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