Personal tools
You are here: Home Web Plone Standard Plone Integration Tests

Standard Plone Integration Tests

Unit tests I often re-use

Policy product

import unittest
from zope.component import getMultiAdapter
from myproduct.policy.tests.base import MyPolicyTestCase
from Products.CMFCore.utils import getToolByName

class TestSetup(MyPolicyTestCase):

def afterSetUp(self):
self.portal_properties = getToolByName(self.portal, 'portal_properties')
self.site_properties = getattr(self.portal_properties, 'site_properties')
self.portal_quickinstaller = getToolByName(self.portal, 'portal_quickinstaller')
self.portal_types = getToolByName(self.portal, 'portal_types')
self.portal_actions = getToolByName(self.portal, 'portal_actions')
self.portal_skins = getToolByName(self.portal, 'portal_skins')
self.portal_registration = getToolByName(self.portal, 'portal_registration')
self.portal_types = getToolByName(self.portal, 'portal_types')

def test_product_installed(self):
self.failUnless(self.portal_quickinstaller.isProductInstalled('my.policy'))

def test_portal_title(self):
self.assertEquals("Mysite Title", self.portal.getProperty('title'))

def test_portal_description(self):
self.assertEquals("Mysite description", self.portal.getProperty('description'))

def test_email_from_name(self):
self.assertEquals("Mysite Intranet Administrator", self.portal.getProperty('email_from_name'))

def test_no_slots(self):
self.assertEqual(None, self.portal.getProperty('right_slots'))
self.assertEqual(None, self.portal.getProperty('left_slots'))

def test_links_in_new_window(self):
self.failUnless(self.site_properties.getProperty('external_links_open_new_window'))

def test_no_inline_editing(self):
self.assertFalse(self.site_properties.getProperty('enable_inline_editing'))

def test_visible_ids(self):
self.failUnless(self.site_properties.getProperty('visible_ids'))

def test_custom_view_available_on_document(self):
fti = self.portal_types['Document']
self.assertTrue(fti in self.portal_types.listTypeInfo())
self.failUnless('my_custom_view' in fti.view_methods)

def test_commenting_allowed_on_news_items(self):
fti = self.portal_types['News Item']
self.failUnless(fti.allow_discussion)

def test_site_actions(self):
site_actions = getattr(self.portal_actions, 'site_actions')
self.assertTrue(site_actions.contact.visible)
self.assertTrue(site_actions.volunteer_now.visible)
self.assertTrue(site_actions.donate_now.visible)
self.assertFalse(site_actions.logout.visible)
self.assertFalse(site_actions.site_help.visible)
self.assertFalse(site_actions.accessibility.visible)
self.assertEquals(0, site_actions.getObjectPosition('volunteer_now'))
self.assertEquals(1, site_actions.getObjectPosition('donate_now'))
self.assertEquals(2, site_actions.getObjectPosition('contact'))

def test_user_actions(self):
user_actions = getattr(self.portal_actions, 'user')
self.assertFalse(user_actions.login.visible)
self.assertFalse(user_actions.logout.visible)
self.assertTrue(user_actions.site_help.visible)
self.assertTrue(user_actions.plone_setup.visible)

def test_portal_tabs(self):
tabs = getattr(self.portal_actions, 'portal_tabs')
self.assertTrue(tabs.log_out.visible)
self.assertTrue(tabs.log_in.visible)

def test_no_manage_own_portets(self):
self.failIf("Portlets: Manage own portlets" in
[r['name'] for r in self.portal.permissionsOfRole('Member') if r['selected']])
self.failIf("Portlets: Manage own portlets" in
[r['name'] for r in self.portal.permissionsOfRole('Contributor') if r['selected']])
self.failIf("Portlets: Manage own portlets" in
[r['name'] for r in self.portal.permissionsOfRole('Reviewer') if r['selected']])

def test_schema_extension(self):
self.folder.invokeFactory('News Item', 'n1')
n1 = getattr(self.folder, 'n1')
field = n1.getField('myExtendedField')
self.failIf(field is None)

def test_only_managers_can_set_sharing_explicitly(self):
roles = ['Anonymous', 'Authenticated', 'Contributor', 'Editor', 'Member', 'Owner', 'Reader', 'Reviewer']
for role in roles:
self.failIf("Sharing page: Delegate roles" in
[r['name'] for r in self.portal.permissionsOfRole(role) if r['selected']])
self.failUnless("Sharing page: Delegate roles" in
[r['name'] for r in self.portal.permissionsOfRole('Manager') if r['selected']])

def test_user_can_choose_own_password(self):
self.failUnless(self.site_properties.getProperty('validate_email'))


def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestSetup))
return suite

Theme product

def test_theme_installed(self):
self.failUnless(self.portal_quickinstaller.isProductInstalled('my.theme'))

def test_skin_layer_installed(self):
skins = self.portal_skins
layer = skins.getSkinPath('My Theme Name')
self.failUnless('my_theme_custom_templates' in layer)
self.assertEquals('My Theme Name', skins.getDefaultSkin())

Miscellaneous

Only managers see member.css:

def test_member_css_for_admins_only(self):
manager_only_expression = "python: portal.portal_membership.checkPermission('Manage portal', portal)"
self.assertEqual(manager_only_expression, self.portal_css.getResource('member.css').getExpression())

Browserlayer registration:

from plone.browserlayer import utils as browserlayer_utils
from my.package import interfaces

def test_browserlayer_installed(self):
self.failUnless(interfaces.IMyPackageLayer in browserlayer_utils.registered_layers())

Role Sharing:

def test_reader_role_shared(self):
some_folder = getattr(self.portal, 'folder name')
self.failUnless("AuthenticatedUsers" in some_folder.users_with_local_role('Reader'))

Checking status messages:

from Products.statusmessages.interfaces import IStatusMessage

def test_some_result(self):
status_messages = IStatusMessage(self.app.REQUEST).showStatusMessages()
self.assertEqual(1, len(status_messages))
self.failUnless("Couldn't locate" in status_messages[0].message)

Workflow

# Verify you've got the right default workflow
def test_workflows_mapped(self):
self.assertEquals(('simple_publication_workflow',),
self.portal_workflow.getDefaultChain())

# Verify that the File type is not exempt from this workflow
def test_workflow_applied_to_file(self):
for portal_type, chain in self.portal_workflow.listChainOverrides():
if portal_type in ('File',):
self.assertEquals(('simple_publication_workflow',), chain)

Catalog Indexes and Metadata

def test_indexes(self):
# Our custom indexes
self.failUnless('getApplicationStart' in self.portal_catalog.indexes())
self.failUnless('getApplicationEnd' in self.portal_catalog.indexes())

def test_metadata(self):
self.failUnless('getApplicationStart' in self.portal_catalog.schema())
self.failUnless('getApplicationEnd' in self.portal_catalog.schema())

More...

Document Actions
« September 2010 »
September
MoTuWeThFrSaSu
12345
6789101112
13141516171819
20212223242526
27282930