annotate forums/tests/test_views.py @ 821:71db8076dc3d

Bandmap WIP: geocoding integrated with add form. Add form works. Before submitting the form, client side JS makes a geocode request to Google and populates hidden lat/lon fields with the result. Successfully created a model instance on the server side. Still need to update admin dashboard, admin approval, and give out badges for adding bands to the map. Once that is done, then work on displaying the map with filtering.
author Brian Neal <bgneal@gmail.com>
date Tue, 23 Sep 2014 20:40:31 -0500
parents 9e803323a0d0
children
rev   line source
bgneal@468 1 """
bgneal@468 2 Tests for the views in the forums application.
bgneal@468 3
bgneal@468 4 """
bgneal@468 5 from django.test import TestCase
bgneal@468 6 from django.contrib.auth.models import User
bgneal@468 7 from django.core.urlresolvers import reverse
bgneal@468 8
bgneal@744 9 from forums.models import Forum, Topic
bgneal@468 10
bgneal@468 11
bgneal@468 12 class ForumPostTestCase(TestCase):
bgneal@468 13 fixtures = ['forums.json']
bgneal@468 14
bgneal@468 15 def setUp(self):
bgneal@468 16 self.username = 'test_user'
bgneal@468 17 self.pw = 'password'
bgneal@468 18 self.user = User.objects.create_user(self.username, '', self.pw)
bgneal@468 19 self.user.save()
bgneal@468 20 self.assertTrue(self.client.login(username=self.username,
bgneal@468 21 password=self.pw))
bgneal@468 22
bgneal@468 23 def tearDown(self):
bgneal@468 24 self.client.logout()
bgneal@468 25
bgneal@468 26 def testBasicForumsTest(self):
bgneal@468 27
bgneal@468 28 forum_slug = 'shallow-end'
bgneal@468 29 topic_name = 'A test topic'
bgneal@468 30 topic_body = 'testing 1, 2, 3...'
bgneal@468 31
bgneal@468 32 response = self.client.post(
bgneal@468 33 reverse('forums-new_topic', kwargs={'slug': forum_slug}),
bgneal@468 34 {'name': topic_name, 'body': topic_body},
bgneal@468 35 follow=True)
bgneal@468 36
bgneal@468 37 self.assertEqual(len(response.redirect_chain), 1)
bgneal@468 38
bgneal@468 39 if response.redirect_chain:
bgneal@468 40 self.assertEqual(response.redirect_chain[0][0],
bgneal@468 41 'http://testserver' + reverse('forums-new_topic_thanks',
bgneal@468 42 kwargs={'tid': '1'}))
bgneal@468 43 self.assertEqual(response.redirect_chain[0][1], 302)
bgneal@468 44
bgneal@468 45 self.assertEqual(response.status_code, 200)
bgneal@468 46
bgneal@468 47 forum = Forum.objects.get(slug=forum_slug)
bgneal@468 48 try:
bgneal@468 49 topic = Topic.objects.get(pk=1)
bgneal@468 50 except Topic.DoesNotExist:
bgneal@468 51 self.fail("topic doesn't exist")
bgneal@468 52
bgneal@468 53 self.assertEqual(topic.forum.pk, forum.pk)
bgneal@468 54 self.assertEqual(topic.user.pk, self.user.pk)
bgneal@468 55 self.assertEqual(topic.name, topic_name)
bgneal@468 56 self.assertEqual(topic.post_count, 1)
bgneal@468 57
bgneal@468 58 post = topic.last_post
bgneal@744 59 self.assertFalse(post is None)
bgneal@468 60
bgneal@468 61 if post:
bgneal@468 62 self.assertEqual(post.body, topic_body)
bgneal@468 63 self.assertEqual(post.user.pk, self.user.pk)
bgneal@468 64
bgneal@468 65 # post to the thread
bgneal@468 66 response = self.client.get(
bgneal@468 67 reverse('forums-topic_index', kwargs={'id': '1'}))
bgneal@468 68 self.assertEqual(response.status_code, 200)
bgneal@468 69
bgneal@468 70 post2_body = 'test quick post'
bgneal@468 71 response = self.client.post(
bgneal@468 72 reverse('forums-quick_reply'),
bgneal@468 73 {'body': post2_body, 'topic_id': 1})
bgneal@468 74 self.assertEqual(response.status_code, 200)
bgneal@468 75 try:
bgneal@468 76 topic = Topic.objects.get(pk=1)
bgneal@468 77 except Topic.DoesNotExist:
bgneal@468 78 self.fail("topic doesn't exist")
bgneal@468 79
bgneal@468 80 post = topic.last_post
bgneal@744 81 self.assertFalse(post is None)
bgneal@468 82 if post:
bgneal@468 83 self.assertEqual(post.body, post2_body)
bgneal@468 84 self.assertEqual(post.user.pk, self.user.pk)
bgneal@468 85 self.assertEqual(topic.post_count, 2)
bgneal@468 86
bgneal@468 87 # quote last post
bgneal@468 88 response = self.client.get(
bgneal@468 89 reverse('forums-new_post', kwargs={'topic_id': 1}),
bgneal@468 90 {'quote_id': 2})
bgneal@468 91 self.assertEqual(response.status_code, 200)
bgneal@468 92
bgneal@468 93 post3_body = 'new post 3 content'
bgneal@468 94 response = self.client.post(
bgneal@468 95 reverse('forums-new_post', kwargs={'topic_id': 1}),
bgneal@468 96 {'body': post3_body, 'post_id': 2},
bgneal@468 97 follow=True)
bgneal@468 98 self.assertEqual(response.status_code, 200)
bgneal@468 99 try:
bgneal@468 100 topic = Topic.objects.get(pk=1)
bgneal@468 101 except Topic.DoesNotExist:
bgneal@468 102 self.fail("topic doesn't exist")
bgneal@468 103
bgneal@468 104 post = topic.last_post
bgneal@744 105 self.assertFalse(post is None)
bgneal@468 106 if post:
bgneal@468 107 self.assertEqual(post.body, post3_body)
bgneal@468 108 self.assertEqual(post.user.pk, self.user.pk)
bgneal@468 109 self.assertEqual(topic.post_count, 3)
bgneal@468 110
bgneal@468 111 # edit last post
bgneal@468 112 response = self.client.get(
bgneal@468 113 reverse('forums-edit_post', kwargs={'id': 3}))
bgneal@468 114 self.assertEqual(response.status_code, 200)
bgneal@468 115
bgneal@468 116 post3_body = 'edited post 3 content'
bgneal@468 117 response = self.client.post(
bgneal@468 118 reverse('forums-edit_post', kwargs={'id': 3}),
bgneal@468 119 {'body': post3_body},
bgneal@468 120 follow=True)
bgneal@468 121 self.assertEqual(response.status_code, 200)
bgneal@468 122 try:
bgneal@468 123 topic = Topic.objects.get(pk=1)
bgneal@468 124 except Topic.DoesNotExist:
bgneal@468 125 self.fail("topic doesn't exist")
bgneal@468 126
bgneal@468 127 post = topic.last_post
bgneal@744 128 self.assertFalse(post is None)
bgneal@468 129 if post:
bgneal@468 130 self.assertEqual(post.body, post3_body)
bgneal@468 131 self.assertEqual(post.user.pk, self.user.pk)
bgneal@468 132 self.assertEqual(topic.post_count, 3)
bgneal@468 133
bgneal@789 134 # our cached copy of the profile is out of date; need to refetch from
bgneal@789 135 # the database
bgneal@789 136 user = User.objects.get(username=self.username)
bgneal@789 137 profile = user.profile
bgneal@468 138 self.assertEqual(profile.forum_post_count, 3)