Skip to content

Commit eeb0727

Browse files
committed
Add tests for AddonsConfigForm
1 parent e2ebaa1 commit eeb0727

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

readthedocs/rtd_tests/tests/test_project_forms.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from readthedocs.core.forms import RichValidationError
1313
from readthedocs.organizations.models import Organization, Team
1414
from readthedocs.projects.constants import (
15+
ADDONS_FLYOUT_SORTING_CALVER,
16+
ADDONS_FLYOUT_SORTING_CUSTOM_PATTERN,
1517
MULTIPLE_VERSIONS_WITH_TRANSLATIONS,
1618
MULTIPLE_VERSIONS_WITHOUT_TRANSLATIONS,
1719
PRIVATE,
@@ -22,6 +24,7 @@
2224
SPHINX,
2325
)
2426
from readthedocs.projects.forms import (
27+
AddonsConfigForm,
2528
EmailHookForm,
2629
EnvironmentVariableForm,
2730
ProjectAutomaticForm,
@@ -1039,3 +1042,68 @@ def test_create(self):
10391042
EnvironmentVariable.objects.latest().value,
10401043
r"'string escaped here: #$\1[]{}\|'",
10411044
)
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

Comments
 (0)