mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
[1.8.x] Replaced hardcoded URLs in admin_* tests
Refs #15779. This will allow easier admin URL changes, when needed.
Thanks Simon Charette for the review.
Backport of 32e6a7d3a5 from master
This commit is contained in:
@@ -2,21 +2,25 @@ from __future__ import unicode_literals
|
||||
|
||||
import warnings
|
||||
|
||||
from django.contrib.admin import TabularInline, ModelAdmin
|
||||
from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase
|
||||
from django.contrib.admin import ModelAdmin, TabularInline
|
||||
from django.contrib.admin.helpers import InlineAdminForm
|
||||
from django.contrib.auth.models import User, Permission
|
||||
from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase
|
||||
from django.contrib.auth.models import Permission, User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.test import TestCase, override_settings, RequestFactory
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import RequestFactory, TestCase, override_settings
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
# local test models
|
||||
from .admin import InnerInline, site as admin_site
|
||||
from .models import (Holder, Inner, Holder2, Inner2, Holder3, Inner3, Person,
|
||||
OutfitItem, Fashionista, Teacher, Parent, Child, Author, Book, Profile,
|
||||
ProfileCollection, ParentModelWithCustomPk, ChildModel1, ChildModel2,
|
||||
Sighting, Novel, Chapter, FootNote, BinaryTree, SomeParentModel,
|
||||
SomeChildModel, Poll, Question, Inner4Stacked, Inner4Tabular, Holder4)
|
||||
from .admin import site as admin_site
|
||||
from .admin import InnerInline
|
||||
from .models import (
|
||||
Author, BinaryTree, Book, Chapter, Child, ChildModel1, ChildModel2,
|
||||
Fashionista, FootNote, Holder, Holder2, Holder3, Holder4, Inner, Inner2,
|
||||
Inner3, Inner4Stacked, Inner4Tabular, Novel, OutfitItem, Parent,
|
||||
ParentModelWithCustomPk, Person, Poll, Profile,
|
||||
ProfileCollection, Question, Sighting, SomeChildModel,
|
||||
SomeParentModel, Teacher,
|
||||
)
|
||||
|
||||
INLINE_CHANGELINK_HTML = 'class="inlinechangelink">Change</a>'
|
||||
|
||||
@@ -30,7 +34,6 @@ class TestInline(TestCase):
|
||||
holder = Holder(dummy=13)
|
||||
holder.save()
|
||||
Inner(dummy=42, holder=holder).save()
|
||||
self.change_url = '/admin/admin_inlines/holder/%i/' % holder.id
|
||||
|
||||
result = self.client.login(username='super', password='secret')
|
||||
self.assertEqual(result, True)
|
||||
@@ -40,7 +43,10 @@ class TestInline(TestCase):
|
||||
"""
|
||||
can_delete should be passed to inlineformset factory.
|
||||
"""
|
||||
response = self.client.get(self.change_url)
|
||||
holder = Holder.objects.get(dummy=13)
|
||||
response = self.client.get(
|
||||
reverse('admin:admin_inlines_holder_change', args=(holder.id,))
|
||||
)
|
||||
inner_formset = response.context['inline_admin_formsets'][0].formset
|
||||
expected = InnerInline.can_delete
|
||||
actual = inner_formset.can_delete
|
||||
@@ -50,13 +56,14 @@ class TestInline(TestCase):
|
||||
"""Bug #13174."""
|
||||
holder = Holder.objects.create(dummy=42)
|
||||
Inner.objects.create(holder=holder, dummy=42, readonly='')
|
||||
response = self.client.get('/admin/admin_inlines/holder/%i/'
|
||||
% holder.id)
|
||||
response = self.client.get(
|
||||
reverse('admin:admin_inlines_holder_change', args=(holder.id,))
|
||||
)
|
||||
self.assertContains(response, '<label>Inner readonly label:</label>')
|
||||
|
||||
def test_many_to_many_inlines(self):
|
||||
"Autogenerated many-to-many inlines are displayed correctly (#13407)"
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_author_add'))
|
||||
# The heading for the m2m inline block uses the right text
|
||||
self.assertContains(response, '<h2>Author-book relationships</h2>')
|
||||
# The "add another" label is correct
|
||||
@@ -77,7 +84,7 @@ class TestInline(TestCase):
|
||||
'max_weight': 0,
|
||||
'shoppingweakness_set-0-item': item.id,
|
||||
}
|
||||
response = self.client.post('/admin/admin_inlines/fashionista/add/', data)
|
||||
response = self.client.post(reverse('admin:admin_inlines_fashionista_add'), data)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)
|
||||
|
||||
@@ -94,7 +101,7 @@ class TestInline(TestCase):
|
||||
'title_set-0-title1': 'a title',
|
||||
'title_set-0-title2': 'a different title',
|
||||
}
|
||||
response = self.client.post('/admin/admin_inlines/titlecollection/add/', data)
|
||||
response = self.client.post(reverse('admin:admin_inlines_titlecollection_add'), data)
|
||||
# Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbox.
|
||||
self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist nonfield"><li>The two titles must be the same</li></ul></td></tr>')
|
||||
|
||||
@@ -102,14 +109,14 @@ class TestInline(TestCase):
|
||||
"""Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable"""
|
||||
# Identically named callable isn't present in the parent ModelAdmin,
|
||||
# rendering of the add view shouldn't explode
|
||||
response = self.client.get('/admin/admin_inlines/novel/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_novel_add'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# View should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="chapter_set-group">')
|
||||
|
||||
def test_callable_lookup(self):
|
||||
"""Admin inline should invoke local callable when its name is listed in readonly_fields"""
|
||||
response = self.client.get('/admin/admin_inlines/poll/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_poll_add'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# Add parent object view should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="question_set-group">')
|
||||
@@ -123,11 +130,11 @@ class TestInline(TestCase):
|
||||
using both the stacked and tabular layouts.
|
||||
Ref #8190.
|
||||
"""
|
||||
response = self.client.get('/admin/admin_inlines/holder4/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder4_add'))
|
||||
self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4)
|
||||
self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1)
|
||||
# ReadOnly fields
|
||||
response = self.client.get('/admin/admin_inlines/capofamiglia/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add'))
|
||||
self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Help text for ReadOnlyInline)" title="Help text for ReadOnlyInline" />', 1)
|
||||
|
||||
def test_inline_hidden_field_no_column(self):
|
||||
@@ -135,7 +142,7 @@ class TestInline(TestCase):
|
||||
parent = SomeParentModel.objects.create(name='a')
|
||||
SomeChildModel.objects.create(name='b', position='0', parent=parent)
|
||||
SomeChildModel.objects.create(name='c', position='1', parent=parent)
|
||||
response = self.client.get('/admin/admin_inlines/someparentmodel/%s/' % parent.pk)
|
||||
response = self.client.get(reverse('admin:admin_inlines_someparentmodel_change', args=(parent.pk,)))
|
||||
self.assertNotContains(response, '<td class="field-position">')
|
||||
self.assertContains(response, (
|
||||
'<input id="id_somechildmodel_set-1-position" '
|
||||
@@ -146,7 +153,7 @@ class TestInline(TestCase):
|
||||
Ensure that multiple inlines with related_name='+' have correct form
|
||||
prefixes. Bug #16838.
|
||||
"""
|
||||
response = self.client.get('/admin/admin_inlines/capofamiglia/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add'))
|
||||
|
||||
self.assertContains(response,
|
||||
'<input type="hidden" name="-1-0-id" id="id_-1-0-id" />', html=True)
|
||||
@@ -172,7 +179,7 @@ class TestInline(TestCase):
|
||||
"""
|
||||
holder = Holder.objects.create(pk=123456789, dummy=42)
|
||||
inner = Inner.objects.create(pk=987654321, holder=holder, dummy=42, readonly='')
|
||||
response = self.client.get('/admin/admin_inlines/holder/%i/' % holder.id)
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.id,)))
|
||||
inner_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(inner).pk, inner.pk)
|
||||
self.assertContains(response, inner_shortcut)
|
||||
|
||||
@@ -184,7 +191,7 @@ class TestInline(TestCase):
|
||||
parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo")
|
||||
child1 = ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent)
|
||||
child2 = ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent)
|
||||
response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_parentmodelwithcustompk_change', args=('foo',)))
|
||||
child1_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child1).pk, child1.pk)
|
||||
child2_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child2).pk, child2.pk)
|
||||
self.assertContains(response, child1_shortcut)
|
||||
@@ -203,7 +210,7 @@ class TestInline(TestCase):
|
||||
'sighting_set-0-place': 'Zone 51',
|
||||
'_save': 'Save',
|
||||
}
|
||||
response = self.client.post('/admin/admin_inlines/extraterrestrial/add/', data)
|
||||
response = self.client.post(reverse('admin:admin_inlines_extraterrestrial_add'), data)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(Sighting.objects.filter(et__name='Martian').count(), 1)
|
||||
|
||||
@@ -217,11 +224,11 @@ class TestInline(TestCase):
|
||||
# The total number of forms will remain the same in either case
|
||||
total_forms_hidden = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="2" />'
|
||||
|
||||
response = self.client.get('/admin/admin_inlines/binarytree/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_binarytree_add'))
|
||||
self.assertContains(response, max_forms_input % 3)
|
||||
self.assertContains(response, total_forms_hidden)
|
||||
|
||||
response = self.client.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id)
|
||||
response = self.client.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,)))
|
||||
self.assertContains(response, max_forms_input % 2)
|
||||
self.assertContains(response, total_forms_hidden)
|
||||
|
||||
@@ -240,7 +247,7 @@ class TestInline(TestCase):
|
||||
min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2" />'
|
||||
total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="5" />'
|
||||
|
||||
request = self.factory.get('/admin/admin_inlines/binarytree/add/')
|
||||
request = self.factory.get(reverse('admin:admin_inlines_binarytree_add'))
|
||||
request.user = User(username='super', is_superuser=True)
|
||||
response = modeladmin.changeform_view(request)
|
||||
self.assertContains(response, min_forms)
|
||||
@@ -268,20 +275,20 @@ class TestInline(TestCase):
|
||||
min_forms = '<input id="id_binarytree_set-MIN_NUM_FORMS" name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d" />'
|
||||
total_forms = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d" />'
|
||||
|
||||
request = self.factory.get('/admin/admin_inlines/binarytree/add/')
|
||||
request = self.factory.get(reverse('admin:admin_inlines_binarytree_add'))
|
||||
request.user = User(username='super', is_superuser=True)
|
||||
response = modeladmin.changeform_view(request)
|
||||
self.assertContains(response, min_forms % 2)
|
||||
self.assertContains(response, total_forms % 5)
|
||||
|
||||
request = self.factory.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id)
|
||||
request = self.factory.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,)))
|
||||
request.user = User(username='super', is_superuser=True)
|
||||
response = modeladmin.changeform_view(request, object_id=str(bt_head.id))
|
||||
self.assertContains(response, min_forms % 5)
|
||||
self.assertContains(response, total_forms % 8)
|
||||
|
||||
def test_inline_nonauto_noneditable_pk(self):
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_author_add'))
|
||||
self.assertContains(response,
|
||||
'<input id="id_nonautopkbook_set-0-rand_pk" name="nonautopkbook_set-0-rand_pk" type="hidden" />',
|
||||
html=True)
|
||||
@@ -290,7 +297,7 @@ class TestInline(TestCase):
|
||||
html=True)
|
||||
|
||||
def test_inline_editable_pk(self):
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_author_add'))
|
||||
self.assertContains(response,
|
||||
'<input class="vIntegerField" id="id_editablepkbook_set-0-manual_pk" name="editablepkbook_set-0-manual_pk" type="text" />',
|
||||
html=True, count=1)
|
||||
@@ -301,7 +308,7 @@ class TestInline(TestCase):
|
||||
def test_stacked_inline_edit_form_contains_has_original_class(self):
|
||||
holder = Holder.objects.create(dummy=1)
|
||||
holder.inner_set.create(dummy=1)
|
||||
response = self.client.get('/admin/admin_inlines/holder/%s/' % holder.pk)
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.pk,)))
|
||||
self.assertContains(
|
||||
response,
|
||||
'<div class="inline-related has_original" id="inner_set-0">',
|
||||
@@ -322,10 +329,10 @@ class TestInline(TestCase):
|
||||
('inner4stacked', item1.pk),
|
||||
('inner4tabular', item2.pk),
|
||||
)
|
||||
response = self.client.get('/admin/admin_inlines/holder4/%s/' % holder.pk)
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder4_change', args=(holder.pk,)))
|
||||
self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model)
|
||||
for model, pk in items:
|
||||
url = '/admin/admin_inlines/%s/%s/' % (model, pk)
|
||||
url = reverse('admin:admin_inlines_%s_change' % model, args=(pk,))
|
||||
self.assertContains(response, '<a href="%s" %s' % (url, INLINE_CHANGELINK_HTML))
|
||||
|
||||
def test_inlines_show_change_link_unregistered(self):
|
||||
@@ -333,7 +340,7 @@ class TestInline(TestCase):
|
||||
parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo")
|
||||
ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent)
|
||||
ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent)
|
||||
response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_parentmodelwithcustompk_change', args=('foo',)))
|
||||
self.assertFalse(response.context['inline_admin_formset'].opts.has_registered_model)
|
||||
self.assertNotContains(response, INLINE_CHANGELINK_HTML)
|
||||
|
||||
@@ -341,7 +348,7 @@ class TestInline(TestCase):
|
||||
"Inlines `show_change_link` disabled by default."
|
||||
poll = Poll.objects.create(name="New poll")
|
||||
Question.objects.create(poll=poll)
|
||||
response = self.client.get('/admin/admin_inlines/poll/%s/' % poll.pk)
|
||||
response = self.client.get(reverse('admin:admin_inlines_poll_change', args=(poll.pk,)))
|
||||
self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model)
|
||||
self.assertNotContains(response, INLINE_CHANGELINK_HTML)
|
||||
|
||||
@@ -360,7 +367,7 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder(dummy=13)
|
||||
holder.save()
|
||||
Inner(dummy=42, holder=holder).save()
|
||||
change_url = '/admin/admin_inlines/holder/%i/' % holder.id
|
||||
change_url = reverse('admin:admin_inlines_holder_change', args=(holder.id,))
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
|
||||
@@ -368,7 +375,7 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder3(dummy=13)
|
||||
holder.save()
|
||||
Inner3(dummy=42, holder=holder).save()
|
||||
change_url = '/admin/admin_inlines/holder3/%i/' % holder.id
|
||||
change_url = reverse('admin:admin_inlines_holder3_change', args=(holder.id,))
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
|
||||
@@ -376,7 +383,7 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder2(dummy=13)
|
||||
holder.save()
|
||||
Inner2(dummy=42, holder=holder).save()
|
||||
change_url = '/admin/admin_inlines/holder2/%i/' % holder.id
|
||||
change_url = reverse('admin:admin_inlines_holder2_change', args=(holder.id,))
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
@@ -437,7 +444,7 @@ class TestInlineProtectedOnDelete(TestCase):
|
||||
chapter = Chapter.objects.create(novel=lotr, name='Many Meetings')
|
||||
foot_note = FootNote.objects.create(chapter=chapter, note='yadda yadda')
|
||||
|
||||
change_url = '/admin/admin_inlines/novel/%i/' % lotr.id
|
||||
change_url = reverse('admin:admin_inlines_novel_change', args=(lotr.id,))
|
||||
response = self.client.get(change_url)
|
||||
data = {
|
||||
'name': lotr.name,
|
||||
@@ -491,14 +498,14 @@ class TestInlinePermissions(TestCase):
|
||||
|
||||
author = Author.objects.create(pk=1, name='The Author')
|
||||
book = author.books.create(name='The inline Book')
|
||||
self.author_change_url = '/admin/admin_inlines/author/%i/' % author.id
|
||||
self.author_change_url = reverse('admin:admin_inlines_author_change', args=(author.id,))
|
||||
# Get the ID of the automatically created intermediate model for the Author-Book m2m
|
||||
author_book_auto_m2m_intermediate = Author.books.through.objects.get(author=author, book=book)
|
||||
self.author_book_auto_m2m_intermediate_id = author_book_auto_m2m_intermediate.pk
|
||||
|
||||
holder = Holder2.objects.create(dummy=13)
|
||||
inner2 = Inner2.objects.create(dummy=42, holder=holder)
|
||||
self.holder_change_url = '/admin/admin_inlines/holder2/%i/' % holder.id
|
||||
self.holder_change_url = reverse('admin:admin_inlines_holder2_change', args=(holder.id,))
|
||||
self.inner2_id = inner2.id
|
||||
|
||||
self.assertEqual(
|
||||
@@ -506,14 +513,14 @@ class TestInlinePermissions(TestCase):
|
||||
True)
|
||||
|
||||
def test_inline_add_m2m_noperm(self):
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_author_add'))
|
||||
# No change permission on books, so no inline
|
||||
self.assertNotContains(response, '<h2>Author-book relationships</h2>')
|
||||
self.assertNotContains(response, 'Add another Author-Book Relationship')
|
||||
self.assertNotContains(response, 'id="id_Author_books-TOTAL_FORMS"')
|
||||
|
||||
def test_inline_add_fk_noperm(self):
|
||||
response = self.client.get('/admin/admin_inlines/holder2/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder2_add'))
|
||||
# No permissions on Inner2s, so no inline
|
||||
self.assertNotContains(response, '<h2>Inner2s</h2>')
|
||||
self.assertNotContains(response, 'Add another Inner2')
|
||||
@@ -536,7 +543,7 @@ class TestInlinePermissions(TestCase):
|
||||
def test_inline_add_m2m_add_perm(self):
|
||||
permission = Permission.objects.get(codename='add_book', content_type=self.book_ct)
|
||||
self.user.user_permissions.add(permission)
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_author_add'))
|
||||
# No change permission on Books, so no inline
|
||||
self.assertNotContains(response, '<h2>Author-book relationships</h2>')
|
||||
self.assertNotContains(response, 'Add another Author-Book Relationship')
|
||||
@@ -545,7 +552,7 @@ class TestInlinePermissions(TestCase):
|
||||
def test_inline_add_fk_add_perm(self):
|
||||
permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)
|
||||
self.user.user_permissions.add(permission)
|
||||
response = self.client.get('/admin/admin_inlines/holder2/add/')
|
||||
response = self.client.get(reverse('admin:admin_inlines_holder2_add'))
|
||||
# Add permission on inner2s, so we get the inline
|
||||
self.assertContains(response, '<h2>Inner2s</h2>')
|
||||
self.assertContains(response, 'Add another Inner2')
|
||||
@@ -665,7 +672,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||
"""
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/holder4/add/'))
|
||||
reverse('admin:admin_inlines_holder4_add')))
|
||||
|
||||
inline_id = '#inner4stacked_set-group'
|
||||
rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
|
||||
@@ -681,7 +688,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||
def test_delete_stackeds(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/holder4/add/'))
|
||||
reverse('admin:admin_inlines_holder4_add')))
|
||||
|
||||
inline_id = '#inner4stacked_set-group'
|
||||
rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
|
||||
@@ -706,7 +713,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||
"""
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/profilecollection/add/'))
|
||||
reverse('admin:admin_inlines_profilecollection_add')))
|
||||
|
||||
# Check that there's only one inline to start with and that it has the
|
||||
# correct ID.
|
||||
@@ -763,7 +770,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||
def test_delete_inlines(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/profilecollection/add/'))
|
||||
reverse('admin:admin_inlines_profilecollection_add')))
|
||||
|
||||
# Add a few inlines
|
||||
self.selenium.find_element_by_link_text('Add another Profile').click()
|
||||
@@ -801,7 +808,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||
def test_alternating_rows(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get('%s%s' % (self.live_server_url,
|
||||
'/admin/admin_inlines/profilecollection/add/'))
|
||||
reverse('admin:admin_inlines_profilecollection_add')))
|
||||
|
||||
# Add a few inlines
|
||||
self.selenium.find_element_by_link_text('Add another Profile').click()
|
||||
|
||||
Reference in New Issue
Block a user