changeset 468:ad4b63fbc584

Adding a basic forums test that exercises adding a new topic, post, and editing a post.
author Brian Neal <bgneal@gmail.com>
date Sun, 07 Aug 2011 03:38:42 +0000
parents b910cc1460c8
children 3b30286adba5
files gpp/forums/tests/__init__.py gpp/forums/tests/view_tests.py
diffstat 2 files changed, 136 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/forums/tests/__init__.py	Sun Aug 07 03:38:42 2011 +0000
@@ -0,0 +1,1 @@
+from view_tests import *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/forums/tests/view_tests.py	Sun Aug 07 03:38:42 2011 +0000
@@ -0,0 +1,135 @@
+"""
+Tests for the views in the forums application.
+
+"""
+from django.test import TestCase
+from django.contrib.auth.models import User
+from django.core.urlresolvers import reverse
+
+from forums.models import Forum, Topic, Post
+
+
+class ForumPostTestCase(TestCase):
+    fixtures = ['forums.json']
+
+    def setUp(self):
+        self.username = 'test_user'
+        self.pw = 'password'
+        self.user = User.objects.create_user(self.username, '', self.pw)
+        self.user.save()
+        self.assertTrue(self.client.login(username=self.username,
+            password=self.pw))
+
+    def tearDown(self):
+        self.client.logout()
+
+    def testBasicForumsTest(self):
+
+        forum_slug = 'shallow-end'
+        topic_name = 'A test topic'
+        topic_body = 'testing 1, 2, 3...'
+
+        response = self.client.post(
+                reverse('forums-new_topic', kwargs={'slug': forum_slug}),
+                {'name': topic_name, 'body': topic_body},
+                follow=True)
+
+        self.assertEqual(len(response.redirect_chain), 1)
+
+        if response.redirect_chain:
+            self.assertEqual(response.redirect_chain[0][0],
+                'http://testserver' + reverse('forums-new_topic_thanks',
+                    kwargs={'tid': '1'}))
+            self.assertEqual(response.redirect_chain[0][1], 302)
+
+        self.assertEqual(response.status_code, 200)
+
+        forum = Forum.objects.get(slug=forum_slug)
+        try:
+            topic = Topic.objects.get(pk=1)
+        except Topic.DoesNotExist:
+            self.fail("topic doesn't exist")
+
+        self.assertEqual(topic.forum.pk, forum.pk)
+        self.assertEqual(topic.user.pk, self.user.pk)
+        self.assertEqual(topic.name, topic_name)
+        self.assertEqual(topic.post_count, 1)
+
+        post = topic.last_post
+        self.failIf(post is None)
+
+        if post:
+            self.assertEqual(post.body, topic_body)
+            self.assertEqual(post.user.pk, self.user.pk)
+
+        # post to the thread
+        response = self.client.get(
+                reverse('forums-topic_index', kwargs={'id': '1'}))
+        self.assertEqual(response.status_code, 200)
+
+        post2_body = 'test quick post'
+        response = self.client.post(
+                reverse('forums-quick_reply'),
+                {'body': post2_body, 'topic_id': 1})
+        self.assertEqual(response.status_code, 200)
+        try:
+            topic = Topic.objects.get(pk=1)
+        except Topic.DoesNotExist:
+            self.fail("topic doesn't exist")
+
+        post = topic.last_post
+        self.failIf(post is None)
+        if post:
+            self.assertEqual(post.body, post2_body)
+            self.assertEqual(post.user.pk, self.user.pk)
+        self.assertEqual(topic.post_count, 2)
+
+        # quote last post
+        response = self.client.get(
+                reverse('forums-new_post', kwargs={'topic_id': 1}),
+                {'quote_id': 2})
+        self.assertEqual(response.status_code, 200)
+
+        post3_body = 'new post 3 content'
+        response = self.client.post(
+                reverse('forums-new_post', kwargs={'topic_id': 1}),
+                {'body': post3_body, 'post_id': 2},
+                follow=True)
+        self.assertEqual(response.status_code, 200)
+        try:
+            topic = Topic.objects.get(pk=1)
+        except Topic.DoesNotExist:
+            self.fail("topic doesn't exist")
+
+        post = topic.last_post
+        self.failIf(post is None)
+        if post:
+            self.assertEqual(post.body, post3_body)
+            self.assertEqual(post.user.pk, self.user.pk)
+        self.assertEqual(topic.post_count, 3)
+
+        # edit last post
+        response = self.client.get(
+                reverse('forums-edit_post', kwargs={'id': 3}))
+        self.assertEqual(response.status_code, 200)
+
+        post3_body = 'edited post 3 content'
+        response = self.client.post(
+                reverse('forums-edit_post', kwargs={'id': 3}),
+                {'body': post3_body},
+                follow=True)
+        self.assertEqual(response.status_code, 200)
+        try:
+            topic = Topic.objects.get(pk=1)
+        except Topic.DoesNotExist:
+            self.fail("topic doesn't exist")
+
+        post = topic.last_post
+        self.failIf(post is None)
+        if post:
+            self.assertEqual(post.body, post3_body)
+            self.assertEqual(post.user.pk, self.user.pk)
+        self.assertEqual(topic.post_count, 3)
+
+        profile = self.user.get_profile()
+        self.assertEqual(profile.forum_post_count, 3)