diff options
| author | David Sanders <shang.xiao.sanders@gmail.com> | 2022-09-21 22:56:22 +1000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-09-28 11:28:01 +0200 |
| commit | 9976f3d4b80cfb2e6f4c998438622b78eb1ac53e (patch) | |
| tree | dd5d8117d4d1d68359ea722feb95733b57d1fabf /tests/admin_views/tests.py | |
| parent | 6e891a17220ed19ee41a18c80a5bb76cfd4e926a (diff) | |
Fixed #34025 -- Fixed selecting ModelAdmin.autocomplete_fields after adding/changing related instances via popups.
Regression in c72f6f36c13a21f6db3d4f85d2d3cec87bad45e6.
Thanks Alexandre da Silva for the report.
Diffstat (limited to 'tests/admin_views/tests.py')
| -rw-r--r-- | tests/admin_views/tests.py | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 30010707d9..cd5b8ed836 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -6317,18 +6317,24 @@ class SeleniumTests(AdminSeleniumTestCase): finally: self.selenium.set_window_size(current_size["width"], current_size["height"]) - def test_updating_related_objects_updates_fk_selects(self): + def test_updating_related_objects_updates_fk_selects_except_autocompletes(self): from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select born_country_select_id = "id_born_country" living_country_select_id = "id_living_country" + living_country_select2_textbox_id = "select2-id_living_country-container" favorite_country_to_vacation_select_id = "id_favorite_country_to_vacation" continent_select_id = "id_continent" def _get_HTML_inside_element_by_id(id_): return self.selenium.find_element(By.ID, id_).get_attribute("innerHTML") + def _get_text_inside_element_by_selector(selector): + return self.selenium.find_element(By.CSS_SELECTOR, selector).get_attribute( + "innerText" + ) + self.admin_login( username="super", password="secret", login_url=reverse("admin:index") ) @@ -6353,12 +6359,16 @@ class SeleniumTests(AdminSeleniumTestCase): <option value="1" selected="">Argentina</option> """, ) - self.assertHTMLEqual( - _get_HTML_inside_element_by_id(living_country_select_id), - """ - <option value="" selected="">---------</option> - <option value="1">Argentina</option> - """, + # Argentina isn't added to the living_country select nor selected by + # the select2 widget. + self.assertEqual( + _get_text_inside_element_by_selector(f"#{living_country_select_id}"), "" + ) + self.assertEqual( + _get_text_inside_element_by_selector( + f"#{living_country_select2_textbox_id}" + ), + "", ) # Argentina won't appear because favorite_country_to_vacation field has # limit_choices_to. @@ -6386,13 +6396,18 @@ class SeleniumTests(AdminSeleniumTestCase): <option value="2">Spain</option> """, ) - self.assertHTMLEqual( - _get_HTML_inside_element_by_id(living_country_select_id), - """ - <option value="" selected="">---------</option> - <option value="1">Argentina</option> - <option value="2" selected="">Spain</option> - """, + + # Spain is added to the living_country select and it's also selected by + # the select2 widget. + self.assertEqual( + _get_text_inside_element_by_selector(f"#{living_country_select_id} option"), + "Spain", + ) + self.assertEqual( + _get_text_inside_element_by_selector( + f"#{living_country_select2_textbox_id}" + ), + "Spain", ) # Spain won't appear because favorite_country_to_vacation field has # limit_choices_to. @@ -6422,13 +6437,17 @@ class SeleniumTests(AdminSeleniumTestCase): <option value="2">Italy</option> """, ) - self.assertHTMLEqual( - _get_HTML_inside_element_by_id(living_country_select_id), - """ - <option value="" selected="">---------</option> - <option value="1">Argentina</option> - <option value="2" selected="">Italy</option> - """, + # Italy is added to the living_country select and it's also selected by + # the select2 widget. + self.assertEqual( + _get_text_inside_element_by_selector(f"#{living_country_select_id} option"), + "Italy", + ) + self.assertEqual( + _get_text_inside_element_by_selector( + f"#{living_country_select2_textbox_id}" + ), + "Italy", ) # favorite_country_to_vacation field has no options. self.assertHTMLEqual( |
