diff options
author | Simon Charette <charette.s@gmail.com> | 2013-11-17 17:26:20 -0500 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-01-10 12:24:52 -0500 |
commit | 07988744b347302925bc6cc66511e34224db55ab (patch) | |
tree | 8931006956c957f377133fda6852dafc60e03ff9 /tests/admin_widgets/tests.py | |
parent | 48ad288679a0cb2e2cfb17f128903e6c5b1c4870 (diff) | |
download | django-07988744b347302925bc6cc66511e34224db55ab.tar.gz |
Fixed #13165 -- Added edit and delete links to admin foreign key widgets.
Thanks to Collin Anderson for the review and suggestions and Tim for the
final review.
Diffstat (limited to 'tests/admin_widgets/tests.py')
-rw-r--r-- | tests/admin_widgets/tests.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 3180dbcb9c..c5795c87fb 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -510,6 +510,32 @@ class RelatedFieldWidgetWrapperTests(DjangoTestCase): w = widgets.RelatedFieldWidgetWrapper(w, rel, widget_admin_site) self.assertFalse(w.can_add_related) + def test_select_multiple_widget_cant_change_delete_related(self): + rel = models.Individual._meta.get_field('parent').rel + widget = forms.SelectMultiple() + wrapper = widgets.RelatedFieldWidgetWrapper( + widget, rel, widget_admin_site, + can_add_related=True, + can_change_related=True, + can_delete_related=True, + ) + self.assertTrue(wrapper.can_add_related) + self.assertFalse(wrapper.can_change_related) + self.assertFalse(wrapper.can_delete_related) + + def test_on_delete_cascade_rel_cant_delete_related(self): + rel = models.Individual._meta.get_field('soulmate').rel + widget = forms.Select() + wrapper = widgets.RelatedFieldWidgetWrapper( + widget, rel, widget_admin_site, + can_add_related=True, + can_change_related=True, + can_delete_related=True, + ) + self.assertTrue(wrapper.can_add_related) + self.assertTrue(wrapper.can_change_related) + self.assertFalse(wrapper.can_delete_related) + @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',), ROOT_URLCONF='admin_widgets.urls') @@ -1134,9 +1160,27 @@ class RelatedFieldWidgetSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): # The field now contains the new user self.wait_for('#id_user option[value="newuser"]') + # Click the Change User button to change it + self.selenium.find_element_by_id('change_id_user').click() + self.selenium.switch_to_window('id_user') + self.wait_page_loaded() + + username_field = self.selenium.find_element_by_id('id_username') + username_value = 'changednewuser' + username_field.clear() + username_field.send_keys(username_value) + + save_button_css_selector = '.submit-row > input[type=submit]' + self.selenium.find_element_by_css_selector(save_button_css_selector).click() + self.selenium.switch_to_window(main_window) + # Wait up to 2 seconds for the new option to show up after clicking save in the popup. + self.selenium.implicitly_wait(2) + self.selenium.find_element_by_css_selector('#id_user option[value=changednewuser]') + self.selenium.implicitly_wait(0) + # Go ahead and submit the form to make sure it works self.selenium.find_element_by_css_selector(save_button_css_selector).click() - self.wait_for_text('li.success', 'The profile "newuser" was added successfully.') + self.wait_for_text('li.success', 'The profile "changednewuser" was added successfully.') profiles = models.Profile.objects.all() self.assertEqual(len(profiles), 1) self.assertEqual(profiles[0].user.username, username_value) |