1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Fixed #35940 -- Disabled SelectFilter add/remove buttons when appropriate.

This commit is contained in:
Brock
2024-12-02 15:51:03 +01:00
committed by Sarah Boyce
parent a9c79b4629
commit 8c118c0e00
7 changed files with 103 additions and 52 deletions

View File

@@ -1254,21 +1254,27 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
self.arthur = Student.objects.create(name="Arthur")
self.school = School.objects.create(name="School of Awesome")
def assertActiveButtons(
self, mode, field_name, choose, remove, choose_all=None, remove_all=None
def assertButtonsDisabled(
self,
mode,
field_name,
choose_btn_disabled=False,
remove_btn_disabled=False,
choose_all_btn_disabled=False,
remove_all_btn_disabled=False,
):
choose_button = "#id_%s_add" % field_name
choose_all_button = "#id_%s_add_all" % field_name
remove_button = "#id_%s_remove" % field_name
remove_all_button = "#id_%s_remove_all" % field_name
self.assertEqual(self.has_css_class(choose_button, "active"), choose)
self.assertEqual(self.has_css_class(remove_button, "active"), remove)
self.assertEqual(self.is_disabled(choose_button), choose_btn_disabled)
self.assertEqual(self.is_disabled(remove_button), remove_btn_disabled)
if mode == "horizontal":
self.assertEqual(
self.has_css_class(choose_all_button, "active"), choose_all
self.is_disabled(choose_all_button), choose_all_btn_disabled
)
self.assertEqual(
self.has_css_class(remove_all_button, "active"), remove_all
self.is_disabled(remove_all_button), remove_all_btn_disabled
)
def execute_basic_operations(self, mode, field_name):
@@ -1296,7 +1302,14 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
],
)
self.assertSelectOptions(to_box, [str(self.lisa.id), str(self.peter.id)])
self.assertActiveButtons(mode, field_name, False, False, True, True)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=True,
choose_all_btn_disabled=False,
remove_all_btn_disabled=False,
)
# Click 'Choose all' --------------------------------------------------
if mode == "horizontal":
@@ -1323,7 +1336,14 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
str(self.john.id),
],
)
self.assertActiveButtons(mode, field_name, False, False, False, True)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=True,
choose_all_btn_disabled=True,
remove_all_btn_disabled=False,
)
# Click 'Remove all' --------------------------------------------------
if mode == "horizontal":
@@ -1350,7 +1370,14 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
],
)
self.assertSelectOptions(to_box, [])
self.assertActiveButtons(mode, field_name, False, False, True, False)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=True,
choose_all_btn_disabled=False,
remove_all_btn_disabled=True,
)
# Choose some options ------------------------------------------------
from_lisa_select_option = self.selenium.find_element(
@@ -1367,9 +1394,23 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
self.select_option(from_box, str(self.jason.id))
self.select_option(from_box, str(self.bob.id))
self.select_option(from_box, str(self.john.id))
self.assertActiveButtons(mode, field_name, True, False, True, False)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=False,
remove_btn_disabled=True,
choose_all_btn_disabled=False,
remove_all_btn_disabled=True,
)
self.selenium.find_element(By.ID, choose_button).click()
self.assertActiveButtons(mode, field_name, False, False, True, True)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=True,
choose_all_btn_disabled=False,
remove_all_btn_disabled=False,
)
self.assertSelectOptions(
from_box,
@@ -1402,9 +1443,23 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase):
# Remove some options -------------------------------------------------
self.select_option(to_box, str(self.lisa.id))
self.select_option(to_box, str(self.bob.id))
self.assertActiveButtons(mode, field_name, False, True, True, True)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=False,
choose_all_btn_disabled=False,
remove_all_btn_disabled=False,
)
self.selenium.find_element(By.ID, remove_button).click()
self.assertActiveButtons(mode, field_name, False, False, True, True)
self.assertButtonsDisabled(
mode,
field_name,
choose_btn_disabled=True,
remove_btn_disabled=True,
choose_all_btn_disabled=False,
remove_all_btn_disabled=False,
)
self.assertSelectOptions(
from_box,