|
12 | 12 | from readthedocs.core.forms import RichValidationError
|
13 | 13 | from readthedocs.organizations.models import Organization, Team
|
14 | 14 | from readthedocs.projects.constants import (
|
| 15 | + ADDONS_FLYOUT_SORTING_CALVER, |
| 16 | + ADDONS_FLYOUT_SORTING_CUSTOM_PATTERN, |
15 | 17 | MULTIPLE_VERSIONS_WITH_TRANSLATIONS,
|
16 | 18 | MULTIPLE_VERSIONS_WITHOUT_TRANSLATIONS,
|
17 | 19 | PRIVATE,
|
|
22 | 24 | SPHINX,
|
23 | 25 | )
|
24 | 26 | from readthedocs.projects.forms import (
|
| 27 | + AddonsConfigForm, |
25 | 28 | EmailHookForm,
|
26 | 29 | EnvironmentVariableForm,
|
27 | 30 | ProjectAutomaticForm,
|
@@ -1039,3 +1042,68 @@ def test_create(self):
|
1039 | 1042 | EnvironmentVariable.objects.latest().value,
|
1040 | 1043 | r"'string escaped here: #$\1[]{}\|'",
|
1041 | 1044 | )
|
| 1045 | + |
| 1046 | + |
| 1047 | +class TestAddonsConfigForm(TestCase): |
| 1048 | + def setUp(self): |
| 1049 | + self.project = get(Project) |
| 1050 | + |
| 1051 | + def test_addonsconfig_form(self): |
| 1052 | + data = { |
| 1053 | + "enabled": True, |
| 1054 | + "analytics_enabled": False, |
| 1055 | + "doc_diff_enabled": False, |
| 1056 | + "external_version_warning_enabled": True, |
| 1057 | + "flyout_enabled": True, |
| 1058 | + "flyout_sorting": ADDONS_FLYOUT_SORTING_CALVER, |
| 1059 | + "flyout_sorting_latest_stable_at_beginning": True, |
| 1060 | + "flyout_sorting_custom_pattern": None, |
| 1061 | + "hotkeys_enabled": False, |
| 1062 | + "search_enabled": False, |
| 1063 | + "stable_latest_version_warning_enabled": True, |
| 1064 | + } |
| 1065 | + form = AddonsConfigForm(data=data, project=self.project) |
| 1066 | + self.assertTrue(form.is_valid()) |
| 1067 | + form.save() |
| 1068 | + |
| 1069 | + self.assertEqual(self.project.addons.enabled, True) |
| 1070 | + self.assertEqual(self.project.addons.analytics_enabled, False) |
| 1071 | + self.assertEqual(self.project.addons.doc_diff_enabled, False) |
| 1072 | + self.assertEqual(self.project.addons.external_version_warning_enabled, True) |
| 1073 | + self.assertEqual(self.project.addons.flyout_enabled, True) |
| 1074 | + self.assertEqual( |
| 1075 | + self.project.addons.flyout_sorting, |
| 1076 | + ADDONS_FLYOUT_SORTING_CALVER, |
| 1077 | + ) |
| 1078 | + self.assertEqual( |
| 1079 | + self.project.addons.flyout_sorting_latest_stable_at_beginning, |
| 1080 | + True, |
| 1081 | + ) |
| 1082 | + self.assertEqual(self.project.addons.flyout_sorting_custom_pattern, None) |
| 1083 | + self.assertEqual(self.project.addons.hotkeys_enabled, False) |
| 1084 | + self.assertEqual(self.project.addons.search_enabled, False) |
| 1085 | + self.assertEqual( |
| 1086 | + self.project.addons.stable_latest_version_warning_enabled, |
| 1087 | + True, |
| 1088 | + ) |
| 1089 | + |
| 1090 | + def test_addonsconfig_form_invalid_sorting_custom_pattern(self): |
| 1091 | + data = { |
| 1092 | + "enabled": True, |
| 1093 | + "analytics_enabled": False, |
| 1094 | + "doc_diff_enabled": False, |
| 1095 | + "external_version_warning_enabled": True, |
| 1096 | + "flyout_enabled": True, |
| 1097 | + "flyout_sorting": ADDONS_FLYOUT_SORTING_CUSTOM_PATTERN, |
| 1098 | + "flyout_sorting_latest_stable_at_beginning": True, |
| 1099 | + "flyout_sorting_custom_pattern": None, |
| 1100 | + "hotkeys_enabled": False, |
| 1101 | + "search_enabled": False, |
| 1102 | + "stable_latest_version_warning_enabled": True, |
| 1103 | + } |
| 1104 | + form = AddonsConfigForm(data=data, project=self.project) |
| 1105 | + self.assertFalse(form.is_valid()) |
| 1106 | + self.assertEqual( |
| 1107 | + "The flyout sorting custom pattern is required when selecting a custom pattern.", |
| 1108 | + form.errors["__all__"][0], |
| 1109 | + ) |
0 commit comments