Add admin history, add type, and add page tests
parent
a950049356
commit
c795c18575
|
|
@ -76,16 +76,30 @@ class AdminTestCase(TestCase):
|
||||||
admin_instance = self.get_admin_instance(model)
|
admin_instance = self.get_admin_instance(model)
|
||||||
return reverse(admin_urlname(admin_instance.opts, 'change'), args=(object_id,))
|
return reverse(admin_urlname(admin_instance.opts, 'change'), args=(object_id,))
|
||||||
|
|
||||||
|
def get_history_url(self, model, object_id):
|
||||||
|
admin_instance = self.get_admin_instance(model)
|
||||||
|
return reverse(admin_urlname(admin_instance.opts, 'history'), args=(object_id,))
|
||||||
|
|
||||||
def get_delete_url(self, model, object_id):
|
def get_delete_url(self, model, object_id):
|
||||||
admin_instance = self.get_admin_instance(model)
|
admin_instance = self.get_admin_instance(model)
|
||||||
return reverse(admin_urlname(admin_instance.opts, 'delete'), args=(object_id,))
|
return reverse(admin_urlname(admin_instance.opts, 'delete'), args=(object_id,))
|
||||||
|
|
||||||
def admin_post_add(self, model, formdata):
|
def admin_get_add(self, model, qs=''):
|
||||||
"""
|
"""
|
||||||
Make a direct "add" call to the admin page, circumvening login checks.
|
Make a direct "add" call to the admin page, circumvening login checks.
|
||||||
"""
|
"""
|
||||||
admin_instance = self.get_admin_instance(model)
|
admin_instance = self.get_admin_instance(model)
|
||||||
request = self.create_admin_request('post', self.get_add_url(model), data=formdata)
|
request = self.create_admin_request('get', self.get_add_url(model) + qs)
|
||||||
|
response = admin_instance.add_view(request)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
return response
|
||||||
|
|
||||||
|
def admin_post_add(self, model, formdata, qs=''):
|
||||||
|
"""
|
||||||
|
Make a direct "add" call to the admin page, circumvening login checks.
|
||||||
|
"""
|
||||||
|
admin_instance = self.get_admin_instance(model)
|
||||||
|
request = self.create_admin_request('post', self.get_add_url(model) + qs, data=formdata)
|
||||||
response = admin_instance.add_view(request)
|
response = admin_instance.add_view(request)
|
||||||
self.assertFormSuccess(request.path, response)
|
self.assertFormSuccess(request.path, response)
|
||||||
return response
|
return response
|
||||||
|
|
@ -120,6 +134,26 @@ class AdminTestCase(TestCase):
|
||||||
self.assertFormSuccess(request.path, response)
|
self.assertFormSuccess(request.path, response)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def admin_get_history(self, model, object_id, query=None, **extra):
|
||||||
|
"""
|
||||||
|
Perform a GET request on the admin page
|
||||||
|
"""
|
||||||
|
admin_instance = self.get_admin_instance(model)
|
||||||
|
request = self.create_admin_request('get', self.get_history_url(model, object_id), data=query, **extra)
|
||||||
|
response = admin_instance.history_view(request, str(object_id))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
return response
|
||||||
|
|
||||||
|
def admin_get_delete(self, model, object_id, query=None, **extra):
|
||||||
|
"""
|
||||||
|
Perform a GET request on the admin delete page
|
||||||
|
"""
|
||||||
|
admin_instance = self.get_admin_instance(model)
|
||||||
|
request = self.create_admin_request('get', self.get_delete_url(model, object_id), data=query, **extra)
|
||||||
|
response = admin_instance.delete_view(request, str(object_id))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
return response
|
||||||
|
|
||||||
def admin_post_delete(self, model, object_id, **extra):
|
def admin_post_delete(self, model, object_id, **extra):
|
||||||
"""
|
"""
|
||||||
Make a direct "add" call to the admin page, circumvening login checks.
|
Make a direct "add" call to the admin page, circumvening login checks.
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,28 @@ class PolymorphicAdminTests(AdminTestCase):
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Now test which results are returned
|
# -- add page
|
||||||
d_obj = Model2D.objects.create(field1='A', field2='B', field3='C', field4='D')
|
ct_id = ContentType.objects.get_for_model(Model2D).pk
|
||||||
|
self.admin_get_add(Model2A) # shows type page
|
||||||
|
self.admin_get_add(Model2A, qs='?ct_id={}'.format(ct_id)) # shows type page
|
||||||
|
|
||||||
|
self.admin_get_add(Model2A) # shows type page
|
||||||
|
self.admin_post_add(Model2A, {
|
||||||
|
'field1': 'A',
|
||||||
|
'field2': 'B',
|
||||||
|
'field3': 'C',
|
||||||
|
'field4': 'D'
|
||||||
|
}, qs='?ct_id={}'.format(ct_id))
|
||||||
|
|
||||||
|
d_obj = Model2A.objects.all()[0]
|
||||||
|
self.assertEqual(d_obj.__class__, Model2D)
|
||||||
|
self.assertEqual(d_obj.field1, 'A')
|
||||||
|
self.assertEqual(d_obj.field2, 'B')
|
||||||
|
|
||||||
|
# -- list page
|
||||||
self.admin_get_changelist(Model2A) # asserts 200
|
self.admin_get_changelist(Model2A) # asserts 200
|
||||||
|
|
||||||
# See that the child object was returned
|
# -- edit
|
||||||
response = self.admin_get_change(Model2A, d_obj.pk)
|
response = self.admin_get_change(Model2A, d_obj.pk)
|
||||||
self.assertContains(response, 'field4')
|
self.assertContains(response, 'field4')
|
||||||
self.admin_post_change(Model2A, d_obj.pk, {
|
self.admin_post_change(Model2A, d_obj.pk, {
|
||||||
|
|
@ -51,6 +68,11 @@ class PolymorphicAdminTests(AdminTestCase):
|
||||||
self.assertEqual(d_obj.field3, 'C2')
|
self.assertEqual(d_obj.field3, 'C2')
|
||||||
self.assertEqual(d_obj.field4, 'D2')
|
self.assertEqual(d_obj.field4, 'D2')
|
||||||
|
|
||||||
|
# -- history
|
||||||
|
self.admin_get_history(Model2A, d_obj.pk)
|
||||||
|
|
||||||
|
# -- delete
|
||||||
|
self.admin_get_delete(Model2A, d_obj.pk)
|
||||||
self.admin_post_delete(Model2A, d_obj.pk)
|
self.admin_post_delete(Model2A, d_obj.pk)
|
||||||
self.assertRaises(Model2A.DoesNotExist, lambda: d_obj.refresh_from_db())
|
self.assertRaises(Model2A.DoesNotExist, lambda: d_obj.refresh_from_db())
|
||||||
|
|
||||||
|
|
@ -77,6 +99,8 @@ class PolymorphicAdminTests(AdminTestCase):
|
||||||
|
|
||||||
parent = InlineParent.objects.create(title='FOO')
|
parent = InlineParent.objects.create(title='FOO')
|
||||||
self.assertEqual(parent.inline_children.count(), 0)
|
self.assertEqual(parent.inline_children.count(), 0)
|
||||||
|
|
||||||
|
# -- get edit page
|
||||||
response = self.admin_get_change(InlineParent, parent.pk)
|
response = self.admin_get_change(InlineParent, parent.pk)
|
||||||
|
|
||||||
# Make sure the fieldset has the right data exposed in data-inline-formset
|
# Make sure the fieldset has the right data exposed in data-inline-formset
|
||||||
|
|
@ -84,6 +108,7 @@ class PolymorphicAdminTests(AdminTestCase):
|
||||||
self.assertContains(response, escape('"type": "inlinemodela"'))
|
self.assertContains(response, escape('"type": "inlinemodela"'))
|
||||||
self.assertContains(response, escape('"type": "inlinemodelb"'))
|
self.assertContains(response, escape('"type": "inlinemodelb"'))
|
||||||
|
|
||||||
|
# -- post edit page
|
||||||
self.admin_post_change(InlineParent, parent.pk, {
|
self.admin_post_change(InlineParent, parent.pk, {
|
||||||
'title': 'FOO2',
|
'title': 'FOO2',
|
||||||
'inline_children-INITIAL_FORMS': 0,
|
'inline_children-INITIAL_FORMS': 0,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue