plone.app.discussion/plone/app/discussion/tests/test_migration.py

58 lines
2.1 KiB
Python
Raw Normal View History

import unittest
from zope.annotation.interfaces import IAnnotations
from Products.CMFCore.utils import getToolByName
from Products.PloneTestCase.ptc import PloneTestCase
from plone.app.discussion.tests.layer import DiscussionLayer
from plone.app.discussion.browser.migration import View
from plone.app.discussion.interfaces import IConversation, IComment
class MigrationTest(PloneTestCase):
def afterSetUp(self):
self.loginAsPortalOwner()
typetool = self.portal.portal_types
typetool.constructContent('Document', self.portal, 'doc')
# Create a document
self.discussion = getToolByName(self.portal, 'portal_discussion', None)
self.discussion.overrideDiscussionFor(self.portal.doc, 1)
# Publish it
self.workflow = self.portal.portal_workflow
self.workflow.doActionFor(self.portal.doc, 'publish')
request = self.app.REQUEST
context = getattr(self.portal, 'doc')
self.view = View(context, request)
self.workflow.setChainForPortalTypes(('Discussion Item',), 'comment_review_workflow')
def test_migrate_comment(self):
# Create one comment
self.discussion.getDiscussionFor(self.portal.doc)
self.portal.doc.talkback.createReply('My Title', 'My Text')
reply = self.portal.doc.talkback.objectValues()[0]
self.assertEqual(reply.Title(), 'My Title')
self.assertEqual(reply.EditableBody(), 'My Text')
# Call migration script
self.view()
# Make sure a conversation has been created
self.failUnless('plone.app.discussion:conversation' in IAnnotations(self.portal.doc))
conversation = IConversation(self.portal.doc)
# Check migration
self.assertEquals(conversation.total_comments, 1)
self.failUnless(conversation.getComments().next())
self.assert_(IComment.providedBy(conversation.getComments().next()))
self.assertEquals(conversation.getComments().next().Title(), 'My Title')
self.assertEquals(conversation.getComments().next().text, 'My Text')
def test_suite():
return unittest.defaultTestLoader.loadTestsFromName(__name__)