From fcdaa9c9fcc2ec4046c3cafa44b6cc4003438438 Mon Sep 17 00:00:00 2001 From: Raphael Kimmig Date: Sun, 19 May 2013 09:59:28 +0200 Subject: [PATCH] add more tests for the example app --- example/blog/tests.py | 86 ++++++++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 26 deletions(-) diff --git a/example/blog/tests.py b/example/blog/tests.py index 683f350..e2d7a14 100644 --- a/example/blog/tests.py +++ b/example/blog/tests.py @@ -1,36 +1,70 @@ -from django.utils import unittest -from django.test.client import RequestFactory +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import TestCase, Client -from djadmin2 import views +from .models import Post -class ViewTest(unittest.TestCase): + +class BaseIntegrationTest(TestCase): + """ + Base TestCase for integration tests. + """ def setUp(self): - self.factory = RequestFactory() + 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 IndexViewTest(ViewTest): - def test_response_ok(self): - request = self.factory.get('/admin/blog/post/') - response = views.IndexView.as_view()(request) +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) - -class ModelListViewTest(ViewTest): - pass + 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_detail", + args=(post.pk, ))) -class ModelDetailViewTest(ViewTest): - pass - - -class ModelEditFormViewTest(ViewTest): - pass - - -class ModelAddFormViewTest(ViewTest): - pass - - -class ModelDeleteViewTest(ViewTest): - pass +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())