def afterSetUp(self):
        self.loginAsPortalOwner()

        # Add all users
        addMembers(self.portal, USERS)

        # Add users to Discussion Manager group
        add2Group(self.portal, 'DiscussionManager', DM_USERS_IDS)

        # Allow discussion for Document
        portal_types = getToolByName(self.portal, 'portal_types')
        doc_fti = portal_types.getTypeInfo('Document')
        doc_fti._updateProperty('allow_discussion', 1)

        # Make sure Documents are visible by default
        self.portal.portal_workflow.setChainForPortalTypes(('Document',),
                                                           'plone_workflow')

        # Add testing documents to portal. Add one document for avery user.
        # For testing behaviors, where made some changes to document state
        # it's more usefull.
        self.discussion = getToolByName(self.portal, 'portal_discussion', None)
        all_users_id = DM_USERS_IDS + COMMON_USERS_IDS
        for user_id in all_users_id:
            doc_id = 'doc_%s' % user_id
            self.portal.invokeFactory('Document', id=doc_id)
            doc_obj = getattr(self.portal, doc_id)
            doc_obj.edit(text_format='plain',
                         text='hello world from %s' % doc_id)
            # Create talkback for document and Add comment to doc_obj
            self.discussion.getDiscussionFor(doc_obj)
            doc_obj.discussion_reply('A Reply for %s' % doc_id,
                                     'text of reply for %s' % doc_id)
    def afterSetUp(self):
        self.portal._original_MailHost = self.portal.MailHost
        self.portal.MailHost = MockMailHost('MailHost')

        self.loginAsPortalOwner()

        # VERY IMPORTANT to guarantee product skin's content visibility
        self._refreshSkinData()
        '''Preparation for functional testing'''
        self.membership = getToolByName(self.portal, 'portal_membership', None)
        self.discussion = getToolByName(self.portal, 'portal_discussion', None)

        # Allow discussion for Document
        portal_types = getToolByName(self.portal, 'portal_types', None)
        doc_fti = portal_types.getTypeInfo('Document')
        doc_fti._updateProperty('allow_discussion', 1)

        # Make sure Documents are visible by default
        # XXX only do this for plone 3
        self.portal.portal_workflow.setChainForPortalTypes(('Document',),
                                                           'plone_workflow')
        portal_properties = getToolByName(self.portal, 'portal_properties',
                                          None)
        self.prefs = portal_properties[PROPERTY_SHEET]

        # Add users and add members to DiscussionManager group
        addMembers(self.portal, USERS)
        add2Group(self.portal, 'DiscussionManager', DM_USERS_IDS)
        self.createMemberarea('owner')

        # Prepare mail sending - enter an e-mail adress,
        # and allow all possible notifications
        self.portal.email_from_address = '*****@*****.**'
        setProperties(self.prefs, 'enable_moderation',
            'enable_approve_notification', 'enable_approve_user_notification',
            'enable_reply_user_notification', 'enable_published_notification',
            'enable_rejected_user_notification')
        self.prefs._updateProperty('email_discussion_manager',
                                   '*****@*****.**')
        self.prefs._updateProperty('email_subject_prefix', 'PREFIX')

        # Add testing document to portal
        self.login('owner')
        self.portal.Members['owner'].invokeFactory('Document', id='my_doc',
                                                   title="Test document")
        self.my_doc = self.portal.Members['owner']['my_doc']
        self.my_doc.edit(text_format='plain', text='hello world')

        # Create talkback for document and Prepare REQUEST
        self.discussion.getDiscussionFor(self.my_doc)