Changeset 242 in products for qPloneComments/trunk/tests


Ignore:
Timestamp:
Feb 2, 2006 1:58:47 PM (18 years ago)
Author:
mylan
Message:

Clean code.
Add recent comment moderation configlet and service scripts.

Location:
qPloneComments/trunk/tests
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • qPloneComments/trunk/tests/testQPloneCommentsCommenting.py

    • Property svn:eol-style set to native
    r183 r242  
    33# 
    44 
    5 import os, sys, string 
    6 if __name__ == '__main__': 
    7     execfile(os.path.join(sys.path[0], 'framework.py')) 
    8  
    95from Products.PloneTestCase import PloneTestCase 
    106from Products.CMFCore.utils import getToolByName 
    117from zExceptions import Unauthorized 
    12 import re 
    138 
    149PRODUCT = 'qPloneComments' 
     
    4742        for user_id in USERS.keys(): 
    4843            self.membership.addMember(user_id, USERS[user_id]['passw'] , USERS[user_id]['roles'], []) 
    49          
     44 
    5045        # Add users to Discussion Manager group 
    5146        portal_groups = getToolByName(self.portal, 'portal_groups') 
     
    5752        doc_fti = portal_types.getTypeInfo('Document') 
    5853        doc_fti._updateProperty('allow_discussion', 1) 
     54 
     55        # Make sure Documents are visible by default 
     56        # XXX only do this for plone 3 
     57        self.portal.portal_workflow.setChainForPortalTypes(('Document',), 'plone_workflow') 
    5958 
    6059        # Add testing documents to portal. Add one document for avery user. 
     
    294293        self.discussion.getDiscussionFor(doc_obj) 
    295294        doc_obj.discussion_reply("A Reply to '%s'" % self.doc_moder_off_id,"text of reply to '%s'" % self.doc_moder_off_id) 
    296              
     295 
    297296 
    298297    def testAddCommentToReplyAllowableUsers(self): 
     
    342341        TestCommBase.afterSetUp(self) 
    343342        # Preparation for functional testing 
    344         # Tern On Moderation and tern on Anonymous commenting  
     343        # Tern On Moderation and tern on Anonymous commenting 
    345344        self.request.form['enable_anonymous_commenting'] = 'True' 
    346345        self.request.form['enable_moderation'] = 'True' 
     
    356355        TestCommBase.afterSetUp(self) 
    357356        # Preparation for functional testing 
    358         # Tern On Moderation and tern off Anonymous commenting  
     357        # Tern On Moderation and tern off Anonymous commenting 
    359358        self.request.form['enable_moderation'] = 'True' 
    360359        self.portal.prefs_comments_setup() 
     
    362361        TestMixinAnonymOff.afterSetUp(self) 
    363362        TestMixinModerationOn.afterSetUp(self) 
    364  
    365363 
    366364 
     
    383381        TestCommBase.afterSetUp(self) 
    384382        # Preparation for functional testing 
    385         # Tern Off Moderation and tern off Anonymous commenting  
     383        # Tern Off Moderation and tern off Anonymous commenting 
    386384        self.portal.prefs_comments_setup() 
    387385        # Initialize base classes 
     
    389387        TestMixinModerationOff.afterSetUp(self) 
    390388 
    391      
    392  
    393 TESTS = [TestModerationAnonymComm, TestModerationOFFAnonymComm, TestAnonymCommOFFModeration, TestOFFModerationOFFAnonymComm] 
    394389 
    395390def test_suite(): 
     
    402397 
    403398    return suite 
    404  
    405 if __name__ == '__main__': 
    406     framework() 
    407  
  • qPloneComments/trunk/tests/testQPloneCommentsConfiglet.py

    • Property svn:eol-style set to native
    r214 r242  
    33# 
    44 
    5 import os, sys, string 
    6 if __name__ == '__main__': 
    7     execfile(os.path.join(sys.path[0], 'framework.py')) 
    8  
    95from Products.PloneTestCase import PloneTestCase 
    106from Products.CMFCore.utils import getToolByName 
    11 from Products.CMFCore.CMFCorePermissions import ManagePortal, ReplyToItem 
    12 from Products.MailHost.MailHost import MailBase 
     7from Products.CMFCore.permissions import ReplyToItem 
    138from AccessControl.SecurityManagement import noSecurityManager 
    149 
     
    3429PloneTestCase.setupPloneSite() 
    3530 
    36  
    3731def addUsers(self): 
    3832    self.loginAsPortalOwner() 
     
    4135    for user_id in USERS.keys(): 
    4236        self.membership.addMember(user_id, USERS[user_id]['passw'] , USERS[user_id]['roles'], []) 
    43      
     37 
    4438    # Add users to Discussion Manager group 
    4539    portal_groups = getToolByName(self.portal, 'portal_groups') 
     
    6458        doc_fti._updateProperty('allow_discussion', 1) 
    6559 
     60        # Make sure Documents are visible by default 
     61        # XXX only do this for plone 3 
     62        self.portal.portal_workflow.setChainForPortalTypes(('Document',), 'plone_workflow') 
     63 
    6664        portal_properties = getToolByName(self.portal, 'portal_properties', None) 
    6765        self.prefs = portal_properties[PROPERTY_SHEET] 
     
    8078        member.setMemberProperties({'email':'creator@test.com'}) 
    8179        #self.fail(member.getMemberId()+' :: '+member.getUserName()+' :: '+str(member.getRoles())+' :: '+member.getProperty('email')) 
    82          
     80 
    8381        # Add testing document to portal 
    8482        my_doc = self.portal.invokeFactory('Document', id='my_doc') 
    8583        self.my_doc = self.portal['my_doc'] 
    8684        self.my_doc.edit(text_format='plain', text='hello world') 
    87  
    8885 
    8986    def testAnonymousCommenting(self): 
     
    104101        self.assert_(not 'Anonymous' in actual_reply_permission, \ 
    105102                     "'Reply to Item' permission set for %s. 'Anonymous' role NOT erased" %  actual_reply_permission) 
    106  
    107103 
    108104    def testSwitchONModeration(self): 
     
    130126            self.assert_(not getReplies(), "Viewing discussion item allow for Anonymous user") 
    131127 
    132  
    133128    def testSwitchOFFModeration(self): 
    134129        addUsers(self) 
     
    152147            self.assert_(replies, "No discussion item added or discussion forbidden for %s user" % u) 
    153148 
    154  
    155149    def testApproveNotification(self): 
    156150        # Check ON Notification Anonymous Commenting 
     
    164158        self.portal.prefs_comments_setup() 
    165159        self.assert_(self.prefs.getProperty('enable_approve_notification')==0,"Approve Notification not terned OFF") 
    166  
    167160 
    168161    def testPublishedNotification(self): 
     
    179172 
    180173 
    181  
    182 TESTS = [TestConfiglet] 
    183  
    184174def test_suite(): 
    185175    from unittest import TestSuite, makeSuite 
     
    187177    suite.addTest(makeSuite(TestConfiglet)) 
    188178    return suite 
    189  
    190 if __name__ == '__main__': 
    191     framework() 
    192  
  • qPloneComments/trunk/tests/testQPloneCommentsInstall.py

    • Property svn:eol-style set to native
    r208 r242  
    22# Test product's installation/uninstallation 
    33# 
    4  
    5 import os, sys, string 
    6 if __name__ == '__main__': 
    7     execfile(os.path.join(sys.path[0], 'framework.py')) 
    84 
    95from Products.PloneTestCase import PloneTestCase 
     
    3127    def afterSetUp(self): 
    3228        self.loginAsPortalOwner() 
    33  
    3429        self.qi = self.portal.portal_quickinstaller 
    3530        self.qi.installProduct(PRODUCT) 
     
    4035 
    4136    def test_skins_install(self): 
    42         skinstool=getToolByName(self.portal, 'portal_skins')  
    43  
     37        skinstool=getToolByName(self.portal, 'portal_skins') 
    4438        for skin in skinstool.getSkinSelections(): 
    4539            path = skinstool.getSkinPath(skin) 
    46             path = map( string.strip, string.split( path,',' ) ) 
     40            path = map(str.strip, path.split(',')) 
    4741            self.assert_(PRODUCT_SKIN_NAME in path, 'qPloneComments layer not found in %s' % skin) 
    4842 
    49     #def test_versionedskin_install(self): 
    50     #    skinstool=getToolByName(self.portal, 'portal_skins') 
    51     #    mtool = getToolByName(self.portal, 'portal_migration') 
    52     #    plone_version = mtool.getFileSystemVersion() 
    53     # 
    54     #    for skin in skinstool.getSkinSelections(): 
    55     #        path = skinstool.getSkinPath(skin) 
    56     #        path = map( string.strip, string.split( path,',' ) ) 
    57     #        self.assert_(PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer not found in %s' %skin) 
     43    def test_layer_install(self): 
     44        from plone.browserlayer.utils import registered_layers 
     45        from Products.qPloneComments.interfaces import IPloneCommentsLayer 
     46        self.failUnless(IPloneCommentsLayer in registered_layers()) 
    5847 
    5948    def test_propertysheet_install(self): 
     
    6958        self.assert_(ANONYMOUS_COMMENTING_PID in property_ids, '%s propery not found in %s property' % (ANONYMOUS_COMMENTING_PID, PROPERTY_SHEET)) 
    7059 
    71  
    7260    def test_skins_uninstall(self): 
    7361        self.qi.uninstallProducts([PRODUCT]) 
    7462        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed') 
    75         skinstool=getToolByName(self.portal, 'portal_skins')  
     63        skinstool=getToolByName(self.portal, 'portal_skins') 
    7664 
    7765        #self.assert_(not PRODUCT_SKIN_NAME in skinstool.objectIds(), '%s directory view found in portal_skins after uninstallation' % PRODUCT_SKIN_NAME) 
    7866        for skin in skinstool.getSkinSelections(): 
    7967            path = skinstool.getSkinPath(skin) 
    80             path = map( string.strip, string.split( path,',' ) ) 
     68            path = map(str.strip, path.split(',')) 
    8169            self.assert_(not PRODUCT_SKIN_NAME in path, '%s layer found in %s after uninstallation' % (PRODUCT_SKIN_NAME, skin)) 
    8270 
    83     #def test_versionedskin_uninstall(self): 
    84     #    self.qi.uninstallProducts([PRODUCT]) 
    85     #    self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qSEOptimizer is already installed') 
    86     #    skinstool=getToolByName(self.portal, 'portal_skins') 
    87     #    mtool = getToolByName(self.portal, 'portal_migration') 
    88     #    plone_version = mtool.getFileSystemVersion() 
    89     # 
    90     #    for skin in skinstool.getSkinSelections(): 
    91     #        path = skinstool.getSkinPath(skin) 
    92     #        path = map( string.strip, string.split( path,',' ) ) 
    93     #        self.assert_(not PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer found in %s after uninstallation' %skin) 
     71    def test_layer_uninstall(self): 
     72        self.qi.uninstallProducts([PRODUCT]) 
     73        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed') 
     74 
     75        from plone.browserlayer.utils import registered_layers 
     76        from Products.qPloneComments.interfaces import IPloneCommentsLayer 
     77        self.failIf(IPloneCommentsLayer in registered_layers()) 
    9478 
    9579    def test_configlet_uninstall(self): 
    9680        self.qi.uninstallProducts([PRODUCT]) 
    9781        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed') 
    98      
     82 
    9983        configTool = getToolByName(self.portal, 'portal_controlpanel', None) 
    10084        self.assert_(not CONFIGLET_ID in [a.getId() for a in configTool.listActions()], 'Configlet found after uninstallation') 
     
    10387        self.qi.uninstallProducts([PRODUCT]) 
    10488        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qPloneComments is already installed') 
    105          
     89 
    10690        portal_properties = getToolByName(self.portal, 'portal_properties') 
    10791        self.assert_(PROPERTY_SHEET in portal_properties.objectIds(), \ 
    10892                     'qPloneComments property_sheet not found in portal_properties after uninstallation') 
    109      
     93 
    11094    def test_permission_added(self): 
    111         roles = [item['name'] for item in self.portal.rolesOfPermission(PERM_NAME)] 
    112         self.assert_( roles != [], '%s not installed'%PERM_NAME) 
    113          
     95        roles = [item['name'] for item in self.portal.rolesOfPermission(PERM_NAME)] 
     96        self.assert_( roles != [], '%s not installed'%PERM_NAME) 
    11497 
    115 TESTS = [TestInstallation] 
    11698 
    11799def test_suite(): 
     
    120102    suite.addTest(makeSuite(TestInstallation)) 
    121103    return suite 
    122  
    123 if __name__ == '__main__': 
    124     framework() 
    125  
  • qPloneComments/trunk/tests/testQPloneCommentsNotification.py

    • Property svn:eol-style set to native
    r214 r242  
    1 #    
     1# 
    22# Test configuration form working 
    33# 
    44 
    5 import os, sys, string 
    6  
    7 if __name__ == '__main__': 
    8     execfile(os.path.join(sys.path[0], 'framework.py')) 
    9  
    105from Products.PloneTestCase import PloneTestCase 
    116from Products.CMFCore.utils import getToolByName 
    12 from Products.CMFCore.CMFCorePermissions import ManagePortal, ReplyToItem 
    13 from Products.MailHost.MailHost import MailBase 
     7from Products.CMFCore.permissions import ManagePortal, ReplyToItem 
    148 
    159import re 
    16  
     10from helperNotify import * 
     11from email.Header import Header 
    1712from Products.qPloneComments.utils import getMsg 
    18 from helperNotify import * 
    1913 
    2014PRODUCT = 'qPloneComments' 
     
    4640        doc_fti._updateProperty('allow_discussion', 1) 
    4741 
     42        # Make sure Documents are visible by default 
     43        # XXX only do this for plone 3 
     44        self.portal.portal_workflow.setChainForPortalTypes(('Document',), 'plone_workflow') 
     45 
    4846        portal_properties = getToolByName(self.portal, 'portal_properties', None) 
    4947        self.prefs = portal_properties[PROPERTY_SHEET] 
     
    5755        self.login('dm') 
    5856        # For prepare mail sending - enter an e-mail adress 
     57        self.portal.email_from_address = 'mail@plone.test' 
    5958        self.prefs._updateProperty('email_discussion_manager', 'discussion.manager@test.com') 
    6059        member = self.portal.portal_membership.getAuthenticatedMember() 
     
    6261 
    6362        # Add testing document to portal 
    64         my_doc = self.portal.invokeFactory('Document', id='my_doc') 
     63        my_doc = self.portal.invokeFactory('Document', id='my_doc', title='Doc') 
    6564        self.my_doc = self.portal['my_doc'] 
    6665        self.my_doc.edit(text_format='plain', text='hello world') 
     
    9291 
    9392        msg = getMsg(self.portal, 'reply_notify_template', args) 
    94         patt = re.compile('\\n\\n([^,]*)') 
     93        patt = re.compile('\\n([^,]*?),\\n\\n') 
    9594        m = patt.search(msg) 
    9695        if m: 
     
    184183        reply.deleteDiscussion() 
    185184        mails = getMails() 
    186         self.assert_([1 for m in mails if re.search('^Subject:.*(not approved).*$', m, re.I|re.M)] \ 
     185        regexp = re.compile("Subject:\s*(.*?)$",re.M) 
     186        subject = str(Header('Your comment on "Doc" was not approved', 'utf-8')) 
     187        self.assert_([1 for m in mails if regexp.search(m).group(1) == subject] \ 
    187188                     ,'No notification for rejecting comment' % properties) 
    188189 
    189  
    190     #def test_ 
    191  
    192 TESTS = [TestNotification] 
    193190 
    194191def test_suite(): 
     
    197194    suite.addTest(makeSuite(TestNotification)) 
    198195    return suite 
    199  
    200 if __name__ == '__main__': 
    201     framework() 
    202  
Note: See TracChangeset for help on using the changeset viewer.