From 857b1048d53ebf5fc5581c110e85c212b81ca83a Mon Sep 17 00:00:00 2001 From: GappleBee Date: Thu, 24 Oct 2024 19:44:31 +0100 Subject: Fixed #34619 -- Associated FilteredSelectMultiple elements to their label and help text. --- tests/admin_inlines/tests.py | 38 ++++++++++++------ tests/admin_views/test_related_object_lookups.py | 4 +- tests/admin_views/tests.py | 4 +- tests/admin_widgets/tests.py | 50 +++++++++++++----------- 4 files changed, 55 insertions(+), 41 deletions(-) (limited to 'tests') diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py index 9c32f6fb8e..b08ab3a52a 100644 --- a/tests/admin_inlines/tests.py +++ b/tests/admin_inlines/tests.py @@ -2420,31 +2420,43 @@ class SeleniumTests(AdminSeleniumTestCase): "admin:admin_inlines_courseproxy1_add", "admin:admin_inlines_courseproxy2_add", ] - css_selector = ".dynamic-class_set#class_set-%s h2" + css_available_selector = ( + ".dynamic-class_set#class_set-%s .selector-available-title" + ) + css_chosen_selector = ".dynamic-class_set#class_set-%s .selector-chosen-title" for url_name in tests: with self.subTest(url=url_name): self.selenium.get(self.live_server_url + reverse(url_name)) # First inline shows the verbose_name. - available, chosen = self.selenium.find_elements( - By.CSS_SELECTOR, css_selector % 0 + available = self.selenium.find_element( + By.CSS_SELECTOR, css_available_selector % 0 + ) + chosen = self.selenium.find_element( + By.CSS_SELECTOR, css_chosen_selector % 0 ) - self.assertEqual(available.text, "AVAILABLE ATTENDANT") - self.assertEqual(chosen.text, "CHOSEN ATTENDANT") + self.assertIn("Available attendant", available.text) + self.assertIn("Chosen attendant", chosen.text) # Added inline should also have the correct verbose_name. self.selenium.find_element(By.LINK_TEXT, "Add another Class").click() - available, chosen = self.selenium.find_elements( - By.CSS_SELECTOR, css_selector % 1 + available = self.selenium.find_element( + By.CSS_SELECTOR, css_available_selector % 1 ) - self.assertEqual(available.text, "AVAILABLE ATTENDANT") - self.assertEqual(chosen.text, "CHOSEN ATTENDANT") + chosen = self.selenium.find_element( + By.CSS_SELECTOR, css_chosen_selector % 1 + ) + self.assertIn("Available attendant", available.text) + self.assertIn("Chosen attendant", chosen.text) # Third inline should also have the correct verbose_name. self.selenium.find_element(By.LINK_TEXT, "Add another Class").click() - available, chosen = self.selenium.find_elements( - By.CSS_SELECTOR, css_selector % 2 + available = self.selenium.find_element( + By.CSS_SELECTOR, css_available_selector % 2 + ) + chosen = self.selenium.find_element( + By.CSS_SELECTOR, css_chosen_selector % 2 ) - self.assertEqual(available.text, "AVAILABLE ATTENDANT") - self.assertEqual(chosen.text, "CHOSEN ATTENDANT") + self.assertIn("Available attendant", available.text) + self.assertIn("Chosen attendant", chosen.text) def test_tabular_inline_layout(self): from selenium.webdriver.common.by import By diff --git a/tests/admin_views/test_related_object_lookups.py b/tests/admin_views/test_related_object_lookups.py index 4b2171a09f..b591117460 100644 --- a/tests/admin_views/test_related_object_lookups.py +++ b/tests/admin_views/test_related_object_lookups.py @@ -162,7 +162,7 @@ class SeleniumTests(AdminSeleniumTestCase): # Move the new value to the from box. self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_to']/option").click() - self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_remove_link']").click() + self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_remove']").click() self.assertHTMLEqual( m2m_box.get_attribute("innerHTML"), @@ -172,7 +172,7 @@ class SeleniumTests(AdminSeleniumTestCase): # Move the new value to the to box. self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_from']/option").click() - self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_add_link']").click() + self.selenium.find_element(By.XPATH, "//*[@id='id_m2m_add']").click() self.assertHTMLEqual(m2m_box.get_attribute("innerHTML"), "") self.assertHTMLEqual( diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 3f106f6814..1ff29fc3db 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -6225,9 +6225,7 @@ class SeleniumTests(AdminSeleniumTestCase): self.take_screenshot("selectbox-available-perms-some-selected") # Move permissions to the "Chosen" list, but none is selected yet. - self.selenium.find_element( - By.CSS_SELECTOR, "#id_user_permissions_add_link" - ).click() + self.selenium.find_element(By.CSS_SELECTOR, "#id_user_permissions_add").click() self.take_screenshot("selectbox-chosen-perms-none-selected") # Select some permissions from the "Chosen" list. diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 5da4adf8c9..a81f5802d1 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -1257,15 +1257,19 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): def assertActiveButtons( self, mode, field_name, choose, remove, choose_all=None, remove_all=None ): - choose_link = "#id_%s_add_link" % field_name - choose_all_link = "#id_%s_add_all_link" % field_name - remove_link = "#id_%s_remove_link" % field_name - remove_all_link = "#id_%s_remove_all_link" % field_name - self.assertEqual(self.has_css_class(choose_link, "active"), choose) - self.assertEqual(self.has_css_class(remove_link, "active"), remove) + 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) if mode == "horizontal": - self.assertEqual(self.has_css_class(choose_all_link, "active"), choose_all) - self.assertEqual(self.has_css_class(remove_all_link, "active"), remove_all) + self.assertEqual( + self.has_css_class(choose_all_button, "active"), choose_all + ) + self.assertEqual( + self.has_css_class(remove_all_button, "active"), remove_all + ) def execute_basic_operations(self, mode, field_name): from selenium.webdriver.common.by import By @@ -1274,10 +1278,10 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): from_box = "#id_%s_from" % field_name to_box = "#id_%s_to" % field_name - choose_link = "id_%s_add_link" % field_name - choose_all_link = "id_%s_add_all_link" % field_name - remove_link = "id_%s_remove_link" % field_name - remove_all_link = "id_%s_remove_all_link" % field_name + 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 # Initial positions --------------------------------------------------- self.assertSelectOptions( @@ -1296,7 +1300,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): # Click 'Choose all' -------------------------------------------------- if mode == "horizontal": - self.selenium.find_element(By.ID, choose_all_link).click() + self.selenium.find_element(By.ID, choose_all_button).click() elif mode == "vertical": # There 's no 'Choose all' button in vertical mode, so individually # select all options and click 'Choose'. @@ -1304,7 +1308,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): By.CSS_SELECTOR, from_box + " > option" ): option.click() - self.selenium.find_element(By.ID, choose_link).click() + self.selenium.find_element(By.ID, choose_button).click() self.assertSelectOptions(from_box, []) self.assertSelectOptions( to_box, @@ -1323,7 +1327,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): # Click 'Remove all' -------------------------------------------------- if mode == "horizontal": - self.selenium.find_element(By.ID, remove_all_link).click() + self.selenium.find_element(By.ID, remove_all_button).click() elif mode == "vertical": # There 's no 'Remove all' button in vertical mode, so individually # select all options and click 'Remove'. @@ -1331,7 +1335,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): By.CSS_SELECTOR, to_box + " > option" ): option.click() - self.selenium.find_element(By.ID, remove_link).click() + self.selenium.find_element(By.ID, remove_button).click() self.assertSelectOptions( from_box, [ @@ -1364,7 +1368,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): 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.selenium.find_element(By.ID, choose_link).click() + self.selenium.find_element(By.ID, choose_button).click() self.assertActiveButtons(mode, field_name, False, False, True, True) self.assertSelectOptions( @@ -1399,7 +1403,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): 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.selenium.find_element(By.ID, remove_link).click() + self.selenium.find_element(By.ID, remove_button).click() self.assertActiveButtons(mode, field_name, False, False, True, True) self.assertSelectOptions( @@ -1418,7 +1422,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): # Choose some more options -------------------------------------------- self.select_option(from_box, str(self.arthur.id)) self.select_option(from_box, str(self.cliff.id)) - self.selenium.find_element(By.ID, choose_link).click() + self.selenium.find_element(By.ID, choose_button).click() self.assertSelectOptions( from_box, @@ -1445,7 +1449,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): # Confirm they're selected after clicking inactive buttons: ticket #26575 self.assertSelectedOptions(from_box, [str(self.peter.id), str(self.lisa.id)]) - self.selenium.find_element(By.ID, remove_link).click() + self.selenium.find_element(By.ID, remove_button).click() self.assertSelectedOptions(from_box, [str(self.peter.id), str(self.lisa.id)]) # Unselect the options ------------------------------------------------ @@ -1458,7 +1462,7 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): # Confirm they're selected after clicking inactive buttons: ticket #26575 self.assertSelectedOptions(to_box, [str(self.jason.id), str(self.john.id)]) - self.selenium.find_element(By.ID, choose_link).click() + self.selenium.find_element(By.ID, choose_button).click() self.assertSelectedOptions(to_box, [str(self.jason.id), str(self.john.id)]) # Unselect the options ------------------------------------------------ @@ -1520,8 +1524,8 @@ class HorizontalVerticalFilterSeleniumTests(AdminWidgetSeleniumTestCase): for field_name in ["students", "alumni"]: from_box = "#id_%s_from" % field_name to_box = "#id_%s_to" % field_name - choose_link = "id_%s_add_link" % field_name - remove_link = "id_%s_remove_link" % field_name + choose_link = "id_%s_add" % field_name + remove_link = "id_%s_remove" % field_name input = self.selenium.find_element(By.ID, "id_%s_input" % field_name) # Initial values. self.assertSelectOptions( -- cgit v1.3