plone.app.discussion/plone/app/discussion/tests/test_contentrules.py

152 lines
5.8 KiB
Python

# -*- coding: utf-8 -*-
import unittest2 as unittest
from Testing import ZopeTestCase as ztc
from zope.component import createObject, getAdapter
from zope.event import notify
from plone.app.testing import TEST_USER_ID, setRoles
from plone.contentrules.rule.interfaces import IRuleEventType
from plone.stringinterp.interfaces import IStringSubstitution
from plone.app.discussion.interfaces import IConversation, IReplies
from plone.app.discussion.interfaces import ICommentAddedEvent
from plone.app.discussion.interfaces import ICommentRemovedEvent
from plone.app.discussion.interfaces import IReplyAddedEvent
from plone.app.discussion.interfaces import IReplyRemovedEvent
from plone.app.discussion.testing import (
PLONE_APP_DISCUSSION_INTEGRATION_TESTING,
)
class CommentContentRulesTest(unittest.TestCase):
""" Test custom comments events
"""
layer = PLONE_APP_DISCUSSION_INTEGRATION_TESTING
def setUp(self):
# Setup session manager
ztc.utils.setupCoreSessions(self.layer['app'])
# Setup sandbox
self.portal = self.layer['portal']
self.request = self.layer['request']
# Setup current user properties
member = self.portal.portal_membership.getMemberById(TEST_USER_ID)
member.setMemberProperties({
'fullname': 'X Manager',
'email': 'xmanager@example.com'
})
setRoles(self.portal, TEST_USER_ID, ['Manager'])
name = self.portal.invokeFactory(
id='doc1',
title='Document 1',
type_name='Document')
self.document = self.portal[name]
comment = createObject('plone.Comment')
comment.text = "This is a comment"
comment.author_username = "jim"
comment.author_name = "Jim"
comment.author_email = "jim@example.com"
conversation = IConversation(self.document)
conversation.addComment(comment)
def testEventTypesMarked(self):
self.assertTrue(IRuleEventType.providedBy(ICommentAddedEvent))
self.assertTrue(IRuleEventType.providedBy(ICommentRemovedEvent))
self.assertTrue(IRuleEventType.providedBy(IReplyAddedEvent))
self.assertTrue(IRuleEventType.providedBy(IReplyRemovedEvent))
def testCommentIdStringSubstitution(self):
comment_id = getAdapter(self.document, IStringSubstitution,
name=u"comment_id")
self.assertIsInstance(comment_id(), long)
def testCommentTextStringSubstitution(self):
comment_text = getAdapter(self.document, IStringSubstitution,
name=u"comment_text")
self.assertEqual(comment_text(), u"This is a comment")
def testCommentUserIdStringSubstitution(self):
comment_user_id = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_id")
self.assertEqual(comment_user_id(), u"jim")
def testCommentUserFullNameStringSubstitution(self):
comment_user_fullname = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_fullname")
self.assertEqual(comment_user_fullname(), u"Jim")
def testCommentUserEmailStringSubstitution(self):
comment_user_email = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_email")
self.assertEqual(comment_user_email(), u"jim@example.com")
class ReplyContentRulesTest(unittest.TestCase):
""" Test custom comments events
"""
layer = PLONE_APP_DISCUSSION_INTEGRATION_TESTING
def setUp(self):
# Setup session manager
ztc.utils.setupCoreSessions(self.layer['app'])
# Setup sandbox
self.portal = self.layer['portal']
self.request = self.layer['request']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
name = self.portal.invokeFactory(
id='doc1',
title='Document 1',
type_name='Document')
self.document = self.portal[name]
conversation = IConversation(self.document)
replies = IReplies(conversation)
comment = createObject('plone.Comment')
comment.text = 'This is a comment'
new_id = replies.addComment(comment)
comment = self.document.restrictedTraverse(
'++conversation++default/%s' % new_id)
re_comment = createObject('plone.Comment')
re_comment.text = 'This is a reply'
re_comment.author_username = "julia"
re_comment.author_name = "Juliana"
re_comment.author_email = "julia@example.com"
replies = IReplies(comment)
new_re_id = replies.addComment(re_comment)
def testReplyIdStringSubstitution(self):
reply_id = getAdapter(self.document, IStringSubstitution,
name=u"comment_id")
self.assertIsInstance(reply_id(), long)
def testReplyTextStringSubstitution(self):
reply_text = getAdapter(self.document, IStringSubstitution,
name=u"comment_text")
self.assertEqual(reply_text(), u"This is a reply")
def testReplyUserIdStringSubstitution(self):
reply_user_id = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_id")
self.assertEqual(reply_user_id(), u"julia")
def testReplyUserFullNameStringSubstitution(self):
reply_user_fullname = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_fullname")
self.assertEqual(reply_user_fullname(), u"Juliana")
def testReplyUserEmailStringSubstitution(self):
reply_user_email = getAdapter(self.document, IStringSubstitution,
name=u"comment_user_email")
self.assertEqual(reply_user_email(), u"julia@example.com")