mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-26 02:50:26 +00:00
Uses the template tag admin2_url to create namespaced view names from inside of views. Create model form now redirects to the model index page, as django.contrib.admin. does. Removed get_success_url from ModelListView, as generic.ListView does not call this method.
97 lines
3.9 KiB
Python
97 lines
3.9 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.core.urlresolvers import reverse
|
|
from django.test import TestCase, Client
|
|
|
|
from ..models import Post
|
|
|
|
|
|
class BaseIntegrationTest(TestCase):
|
|
"""
|
|
Base TestCase for integration tests.
|
|
"""
|
|
def setUp(self):
|
|
self.client = Client()
|
|
self.user = get_user_model()(username='user', is_staff=True,
|
|
is_superuser=True)
|
|
self.user.set_password("password")
|
|
self.user.save()
|
|
self.client.login(username='user', password='password')
|
|
|
|
|
|
class AdminIndexTest(BaseIntegrationTest):
|
|
def test_view_ok(self):
|
|
response = self.client.get(reverse("admin2:dashboard"))
|
|
self.assertContains(response, reverse("admin2:blog_post_index"))
|
|
|
|
|
|
class PostListTest(BaseIntegrationTest):
|
|
def test_view_ok(self):
|
|
post = Post.objects.create(title="a_post_title", body="body")
|
|
response = self.client.get(reverse("admin2:blog_post_index"))
|
|
self.assertContains(response, post.title)
|
|
|
|
|
|
class PostDetailViewTest(BaseIntegrationTest):
|
|
def test_view_ok(self):
|
|
post = Post.objects.create(title="a_post_title", body="body")
|
|
response = self.client.get(reverse("admin2:blog_post_detail",
|
|
args=(post.pk, )))
|
|
self.assertContains(response, post.title)
|
|
|
|
|
|
class PostCreateViewTest(BaseIntegrationTest):
|
|
def test_view_ok(self):
|
|
response = self.client.get(reverse("admin2:blog_post_create"))
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
def test_create_post(self):
|
|
response = self.client.post(reverse("admin2:blog_post_create"),
|
|
{"title": "a_post_title",
|
|
"body": "a_post_body"},
|
|
follow=True)
|
|
self.assertTrue(Post.objects.filter(title="a_post_title").exists())
|
|
post = Post.objects.get(title="a_post_title")
|
|
self.assertRedirects(response, reverse("admin2:blog_post_index"))
|
|
|
|
def test_save_and_add_another_redirects_to_create(self):
|
|
"""
|
|
Tests that choosing 'Save and add another' from the model create
|
|
page redirects the user to the model create page.
|
|
"""
|
|
post_data = {"title": "a_post_title",
|
|
"body": "a_post_body",
|
|
"_addanother": ""}
|
|
self.client.login(username='admin', password='password')
|
|
response = self.client.post(reverse("admin2:blog_post_create"),
|
|
post_data)
|
|
post = Post.objects.get(title='a_post_title')
|
|
self.assertRedirects(response, reverse("admin2:blog_post_create"))
|
|
|
|
def test_save_and_continue_editing_redirects_to_update(self):
|
|
"""
|
|
Tests that choosing "Save and continue editing" redirects
|
|
the user to the model update form.
|
|
"""
|
|
post_data = {"title": "Unique",
|
|
"body": "a_post_body",
|
|
"_continue": ""}
|
|
response = self.client.post(reverse("admin2:blog_post_create"),
|
|
post_data)
|
|
post = Post.objects.get(title="Unique")
|
|
self.assertRedirects(response, reverse("admin2:blog_post_update",
|
|
args=(post.pk, )))
|
|
|
|
|
|
class PostDeleteViewTest(BaseIntegrationTest):
|
|
def test_view_ok(self):
|
|
post = Post.objects.create(title="a_post_title", body="body")
|
|
response = self.client.get(reverse("admin2:blog_post_delete",
|
|
args=(post.pk, )))
|
|
self.assertContains(response, post.title)
|
|
|
|
def test_delete_post(self):
|
|
post = Post.objects.create(title="a_post_title", body="body")
|
|
response = self.client.post(reverse("admin2:blog_post_delete",
|
|
args=(post.pk, )))
|
|
self.assertRedirects(response, reverse("admin2:blog_post_index"))
|
|
self.assertFalse(Post.objects.filter(pk=post.pk).exists())
|