diff options
Diffstat (limited to 'tests/regressiontests/comment_tests')
| -rw-r--r-- | tests/regressiontests/comment_tests/tests/comment_view_tests.py | 21 | ||||
| -rw-r--r-- | tests/regressiontests/comment_tests/tests/moderation_view_tests.py | 77 |
2 files changed, 59 insertions, 39 deletions
diff --git a/tests/regressiontests/comment_tests/tests/comment_view_tests.py b/tests/regressiontests/comment_tests/tests/comment_view_tests.py index 0c975116ef..312fab633f 100644 --- a/tests/regressiontests/comment_tests/tests/comment_view_tests.py +++ b/tests/regressiontests/comment_tests/tests/comment_view_tests.py @@ -1,3 +1,4 @@ +import re from django.conf import settings from django.contrib.auth.models import User from django.contrib.comments import signals @@ -5,6 +6,8 @@ from django.contrib.comments.models import Comment from regressiontests.comment_tests.models import Article from regressiontests.comment_tests.tests import CommentTestCase +post_redirect_re = re.compile(r'^http://testserver/posted/\?c=(?P<pk>\d+$)') + class CommentViewTests(CommentTestCase): def testPostCommentHTTPMethods(self): @@ -181,18 +184,26 @@ class CommentViewTests(CommentTestCase): a = Article.objects.get(pk=1) data = self.getValidData(a) response = self.client.post("/post/", data) - self.assertEqual(response["Location"], "http://testserver/posted/?c=1") - + location = response["Location"] + match = post_redirect_re.match(location) + self.failUnless(match != None, "Unexpected redirect location: %s" % location) + data["next"] = "/somewhere/else/" data["comment"] = "This is another comment" response = self.client.post("/post/", data) - self.assertEqual(response["Location"], "http://testserver/somewhere/else/?c=2") + location = response["Location"] + match = re.search(r"^http://testserver/somewhere/else/\?c=\d+$", location) + self.failUnless(match != None, "Unexpected redirect location: %s" % location) def testCommentDoneView(self): a = Article.objects.get(pk=1) data = self.getValidData(a) response = self.client.post("/post/", data) - response = self.client.get("/posted/", {'c':1}) + location = response["Location"] + match = post_redirect_re.match(location) + self.failUnless(match != None, "Unexpected redirect location: %s" % location) + pk = int(match.group('pk')) + response = self.client.get(location) self.assertTemplateUsed(response, "comments/posted.html") - self.assertEqual(response.context[0]["comment"], Comment.objects.get(pk=1)) + self.assertEqual(response.context[0]["comment"], Comment.objects.get(pk=pk)) diff --git a/tests/regressiontests/comment_tests/tests/moderation_view_tests.py b/tests/regressiontests/comment_tests/tests/moderation_view_tests.py index 2f6b51d709..b9eadd78b4 100644 --- a/tests/regressiontests/comment_tests/tests/moderation_view_tests.py +++ b/tests/regressiontests/comment_tests/tests/moderation_view_tests.py @@ -8,39 +8,43 @@ class FlagViewTests(CommentTestCase): def testFlagGet(self): """GET the flag view: render a confirmation page.""" - self.createSomeComments() + comments = self.createSomeComments() + pk = comments[0].pk self.client.login(username="normaluser", password="normaluser") - response = self.client.get("/flag/1/") + response = self.client.get("/flag/%d/" % pk) self.assertTemplateUsed(response, "comments/flag.html") def testFlagPost(self): """POST the flag view: actually flag the view (nice for XHR)""" - self.createSomeComments() + comments = self.createSomeComments() + pk = comments[0].pk self.client.login(username="normaluser", password="normaluser") - response = self.client.post("/flag/1/") - self.assertEqual(response["Location"], "http://testserver/flagged/?c=1") - c = Comment.objects.get(pk=1) + response = self.client.post("/flag/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/flagged/?c=%d" % pk) + c = Comment.objects.get(pk=pk) self.assertEqual(c.flags.filter(flag=CommentFlag.SUGGEST_REMOVAL).count(), 1) return c def testFlagPostTwice(self): """Users don't get to flag comments more than once.""" c = self.testFlagPost() - self.client.post("/flag/1/") - self.client.post("/flag/1/") + self.client.post("/flag/%d/" % c.pk) + self.client.post("/flag/%d/" % c.pk) self.assertEqual(c.flags.filter(flag=CommentFlag.SUGGEST_REMOVAL).count(), 1) def testFlagAnon(self): """GET/POST the flag view while not logged in: redirect to log in.""" - self.createSomeComments() - response = self.client.get("/flag/1/") - self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/flag/1/") - response = self.client.post("/flag/1/") - self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/flag/1/") + comments = self.createSomeComments() + pk = comments[0].pk + response = self.client.get("/flag/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/flag/%d/" % pk) + response = self.client.post("/flag/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/flag/%d/" % pk) def testFlaggedView(self): - self.createSomeComments() - response = self.client.get("/flagged/", data={"c":1}) + comments = self.createSomeComments() + pk = comments[0].pk + response = self.client.get("/flagged/", data={"c":pk}) self.assertTemplateUsed(response, "comments/flagged.html") def testFlagSignals(self): @@ -70,23 +74,25 @@ class DeleteViewTests(CommentTestCase): def testDeletePermissions(self): """The delete view should only be accessible to 'moderators'""" - self.createSomeComments() + comments = self.createSomeComments() + pk = comments[0].pk self.client.login(username="normaluser", password="normaluser") - response = self.client.get("/delete/1/") - self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/delete/1/") + response = self.client.get("/delete/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/delete/%d/" % pk) makeModerator("normaluser") - response = self.client.get("/delete/1/") + response = self.client.get("/delete/%d/" % pk) self.assertEqual(response.status_code, 200) def testDeletePost(self): """POSTing the delete view should mark the comment as removed""" - self.createSomeComments() + comments = self.createSomeComments() + pk = comments[0].pk makeModerator("normaluser") self.client.login(username="normaluser", password="normaluser") - response = self.client.post("/delete/1/") - self.assertEqual(response["Location"], "http://testserver/deleted/?c=1") - c = Comment.objects.get(pk=1) + response = self.client.post("/delete/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/deleted/?c=%d" % pk) + c = Comment.objects.get(pk=pk) self.failUnless(c.is_removed) self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_DELETION, user__username="normaluser").count(), 1) @@ -103,21 +109,23 @@ class DeleteViewTests(CommentTestCase): self.assertEqual(received_signals, [signals.comment_was_flagged]) def testDeletedView(self): - self.createSomeComments() - response = self.client.get("/deleted/", data={"c":1}) + comments = self.createSomeComments() + pk = comments[0].pk + response = self.client.get("/deleted/", data={"c":pk}) self.assertTemplateUsed(response, "comments/deleted.html") class ApproveViewTests(CommentTestCase): def testApprovePermissions(self): """The delete view should only be accessible to 'moderators'""" - self.createSomeComments() + comments = self.createSomeComments() + pk = comments[0].pk self.client.login(username="normaluser", password="normaluser") - response = self.client.get("/approve/1/") - self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/approve/1/") + response = self.client.get("/approve/%d/" % pk) + self.assertEqual(response["Location"], "http://testserver/accounts/login/?next=/approve/%d/" % pk) makeModerator("normaluser") - response = self.client.get("/approve/1/") + response = self.client.get("/approve/%d/" % pk) self.assertEqual(response.status_code, 200) def testApprovePost(self): @@ -127,9 +135,9 @@ class ApproveViewTests(CommentTestCase): makeModerator("normaluser") self.client.login(username="normaluser", password="normaluser") - response = self.client.post("/approve/1/") - self.assertEqual(response["Location"], "http://testserver/approved/?c=1") - c = Comment.objects.get(pk=1) + response = self.client.post("/approve/%d/" % c1.pk) + self.assertEqual(response["Location"], "http://testserver/approved/?c=%d" % c1.pk) + c = Comment.objects.get(pk=c1.pk) self.failUnless(c.is_public) self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_APPROVAL, user__username="normaluser").count(), 1) @@ -146,8 +154,9 @@ class ApproveViewTests(CommentTestCase): self.assertEqual(received_signals, [signals.comment_was_flagged]) def testApprovedView(self): - self.createSomeComments() - response = self.client.get("/approved/", data={"c":1}) + comments = self.createSomeComments() + pk = comments[0].pk + response = self.client.get("/approved/", data={"c":pk}) self.assertTemplateUsed(response, "comments/approved.html") |
