Skip to content

Instantly share code, notes, and snippets.

@browniebroke
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save browniebroke/a60f95cf89b7dcf82f88 to your computer and use it in GitHub Desktop.
Save browniebroke/a60f95cf89b7dcf82f88 to your computer and use it in GitHub Desktop.
Basic test of the Django admin views yours installed apps: simple GET on the list view, add view and list seacrh
from django.contrib import admin
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.db.models import get_models
from django.test import TestCase
class TestAdminViews(TestCase):
def setUp(self):
username = "test"
password = "test"
self.user = User.objects.create_superuser(username, 'test@test.com', password)
self.client.login(username=self.user.username, password=password)
def test_admin_views(self):
for model in get_models():
self.run_for_model(model)
def run_for_model(self, model):
if model in admin.site._registry:
self.admin_add_view(model)
self.admin_change_view(model)
self.admin_search_view(model)
def admin_add_view(self, model):
if admin.site._registry[model].has_add_permission(type("request", (), {"user": self.user})):
url = self.add_view(model)
self.assert_admin_url_valid(model, url)
def add_view(self, model):
return reverse("admin:%s_%s_add" % (model._meta.app_label, model._meta.module_name))
def assert_admin_url_valid(self, model, url):
response = self.client.get(url, follow=True)
self.failUnlessEqual(response.status_code, 200,
"%s != %s -> %s, url: %s" % (response.status_code, 200, repr(model), url))
self.assertFalse("this_is_the_login_form" in response.content,
"login requested for %s" % str(model))
def admin_change_view(self, model):
url = self.change_view(model)
self.assert_admin_url_valid(model, url)
def change_view(self, model):
return reverse("admin:%s_%s_changelist" % (model._meta.app_label, model._meta.module_name))
def admin_search_view(self, model):
url = "%s?q=test" % self.change_view(model)
self.assert_admin_url_valid(model, url)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment