1
from regressiontests.comment_tests.tests import CommentTestCase, CT, Site
2
from django.contrib.comments.forms import CommentForm
3
from django.contrib.comments.models import Comment
4
from django.contrib.comments.moderation import moderator, CommentModerator, AlreadyModerated
5
from regressiontests.comment_tests.models import Entry
6
from django.core import mail
8
class EntryModerator1(CommentModerator):
9
email_notification = True
11
class EntryModerator2(CommentModerator):
12
enable_field = 'enable_comments'
14
class EntryModerator3(CommentModerator):
15
auto_close_field = 'pub_date'
18
class EntryModerator4(CommentModerator):
19
auto_moderate_field = 'pub_date'
22
class CommentUtilsModeratorTests(CommentTestCase):
23
fixtures = ["comment_utils.xml"]
25
def createSomeComments(self):
26
# Tests for the moderation signals must actually post data
27
# through the comment views, because only the comment views
28
# emit the custom signals moderation listens for.
29
e = Entry.objects.get(pk=1)
30
data = self.getValidData(e)
32
self.client.post("/post/", data, REMOTE_ADDR="1.2.3.4")
34
# We explicitly do a try/except to get the comment we've just
35
# posted because moderation may have disallowed it, in which
36
# case we can just return it as None.
38
c1 = Comment.objects.all()[0]
42
self.client.post("/post/", data, REMOTE_ADDR="1.2.3.4")
45
c2 = Comment.objects.all()[0]
51
moderator.unregister(Entry)
53
def testRegisterExistingModel(self):
54
moderator.register(Entry, EntryModerator1)
55
self.assertRaises(AlreadyModerated, moderator.register, Entry, EntryModerator1)
57
def testEmailNotification(self):
58
moderator.register(Entry, EntryModerator1)
59
self.createSomeComments()
60
self.assertEquals(len(mail.outbox), 2)
62
def testCommentsEnabled(self):
63
moderator.register(Entry, EntryModerator2)
64
self.createSomeComments()
65
self.assertEquals(Comment.objects.all().count(), 1)
67
def testAutoCloseField(self):
68
moderator.register(Entry, EntryModerator3)
69
self.createSomeComments()
70
self.assertEquals(Comment.objects.all().count(), 0)
72
def testAutoModerateField(self):
73
moderator.register(Entry, EntryModerator4)
74
c1, c2 = self.createSomeComments()
75
self.assertEquals(c2.is_public, False)