bgneal@468: """ bgneal@468: Tests for the views in the forums application. bgneal@468: bgneal@468: """ bgneal@468: from django.test import TestCase bgneal@468: from django.contrib.auth.models import User bgneal@468: from django.core.urlresolvers import reverse bgneal@468: bgneal@744: from forums.models import Forum, Topic bgneal@468: bgneal@468: bgneal@468: class ForumPostTestCase(TestCase): bgneal@468: fixtures = ['forums.json'] bgneal@468: bgneal@468: def setUp(self): bgneal@468: self.username = 'test_user' bgneal@468: self.pw = 'password' bgneal@468: self.user = User.objects.create_user(self.username, '', self.pw) bgneal@468: self.user.save() bgneal@468: self.assertTrue(self.client.login(username=self.username, bgneal@468: password=self.pw)) bgneal@468: bgneal@468: def tearDown(self): bgneal@468: self.client.logout() bgneal@468: bgneal@468: def testBasicForumsTest(self): bgneal@468: bgneal@468: forum_slug = 'shallow-end' bgneal@468: topic_name = 'A test topic' bgneal@468: topic_body = 'testing 1, 2, 3...' bgneal@468: bgneal@468: response = self.client.post( bgneal@468: reverse('forums-new_topic', kwargs={'slug': forum_slug}), bgneal@468: {'name': topic_name, 'body': topic_body}, bgneal@468: follow=True) bgneal@468: bgneal@468: self.assertEqual(len(response.redirect_chain), 1) bgneal@468: bgneal@468: if response.redirect_chain: bgneal@468: self.assertEqual(response.redirect_chain[0][0], bgneal@468: 'http://testserver' + reverse('forums-new_topic_thanks', bgneal@468: kwargs={'tid': '1'})) bgneal@468: self.assertEqual(response.redirect_chain[0][1], 302) bgneal@468: bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: bgneal@468: forum = Forum.objects.get(slug=forum_slug) bgneal@468: try: bgneal@468: topic = Topic.objects.get(pk=1) bgneal@468: except Topic.DoesNotExist: bgneal@468: self.fail("topic doesn't exist") bgneal@468: bgneal@468: self.assertEqual(topic.forum.pk, forum.pk) bgneal@468: self.assertEqual(topic.user.pk, self.user.pk) bgneal@468: self.assertEqual(topic.name, topic_name) bgneal@468: self.assertEqual(topic.post_count, 1) bgneal@468: bgneal@468: post = topic.last_post bgneal@744: self.assertFalse(post is None) bgneal@468: bgneal@468: if post: bgneal@468: self.assertEqual(post.body, topic_body) bgneal@468: self.assertEqual(post.user.pk, self.user.pk) bgneal@468: bgneal@468: # post to the thread bgneal@468: response = self.client.get( bgneal@468: reverse('forums-topic_index', kwargs={'id': '1'})) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: bgneal@468: post2_body = 'test quick post' bgneal@468: response = self.client.post( bgneal@468: reverse('forums-quick_reply'), bgneal@468: {'body': post2_body, 'topic_id': 1}) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: try: bgneal@468: topic = Topic.objects.get(pk=1) bgneal@468: except Topic.DoesNotExist: bgneal@468: self.fail("topic doesn't exist") bgneal@468: bgneal@468: post = topic.last_post bgneal@744: self.assertFalse(post is None) bgneal@468: if post: bgneal@468: self.assertEqual(post.body, post2_body) bgneal@468: self.assertEqual(post.user.pk, self.user.pk) bgneal@468: self.assertEqual(topic.post_count, 2) bgneal@468: bgneal@468: # quote last post bgneal@468: response = self.client.get( bgneal@468: reverse('forums-new_post', kwargs={'topic_id': 1}), bgneal@468: {'quote_id': 2}) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: bgneal@468: post3_body = 'new post 3 content' bgneal@468: response = self.client.post( bgneal@468: reverse('forums-new_post', kwargs={'topic_id': 1}), bgneal@468: {'body': post3_body, 'post_id': 2}, bgneal@468: follow=True) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: try: bgneal@468: topic = Topic.objects.get(pk=1) bgneal@468: except Topic.DoesNotExist: bgneal@468: self.fail("topic doesn't exist") bgneal@468: bgneal@468: post = topic.last_post bgneal@744: self.assertFalse(post is None) bgneal@468: if post: bgneal@468: self.assertEqual(post.body, post3_body) bgneal@468: self.assertEqual(post.user.pk, self.user.pk) bgneal@468: self.assertEqual(topic.post_count, 3) bgneal@468: bgneal@468: # edit last post bgneal@468: response = self.client.get( bgneal@468: reverse('forums-edit_post', kwargs={'id': 3})) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: bgneal@468: post3_body = 'edited post 3 content' bgneal@468: response = self.client.post( bgneal@468: reverse('forums-edit_post', kwargs={'id': 3}), bgneal@468: {'body': post3_body}, bgneal@468: follow=True) bgneal@468: self.assertEqual(response.status_code, 200) bgneal@468: try: bgneal@468: topic = Topic.objects.get(pk=1) bgneal@468: except Topic.DoesNotExist: bgneal@468: self.fail("topic doesn't exist") bgneal@468: bgneal@468: post = topic.last_post bgneal@744: self.assertFalse(post is None) bgneal@468: if post: bgneal@468: self.assertEqual(post.body, post3_body) bgneal@468: self.assertEqual(post.user.pk, self.user.pk) bgneal@468: self.assertEqual(topic.post_count, 3) bgneal@468: bgneal@789: # our cached copy of the profile is out of date; need to refetch from bgneal@789: # the database bgneal@789: user = User.objects.get(username=self.username) bgneal@789: profile = user.profile bgneal@468: self.assertEqual(profile.forum_post_count, 3)