==================== A functional doctest ==================== Set up testbrowser:: >>> def getAuth(): ... try: ... from plone.protect import authenticator ... return authenticator.createToken() ... except: # no plone.protect auto csrf, so no worries ... return '' >>> from plone.app.testing import login >>> login(layer['portal'], 'admin') >>> app = layer['app'] >>> from plone.testing.z2 import Browser >>> browser = Browser(app) >>> browser.handleErrors = False >>> browser.addHeader('Authorization', 'Basic admin:secret') >>> portal = layer['portal'] >>> portal_url = 'http://nohost/plone' >>> browser.open(portal_url) >>> browser.getLink(url=portal_url + "/folder_factories").click() >>> browser.getControl(label="Page").selected = True >>> browser.getControl(name="form.button.Add").click() >>> browser.getControl(name="form.widgets.IDublinCore.title").value = "Test Document" >>> browser.getControl("Save").click() >>> 'Item created' in browser.contents True Create a collection for testing purposes. Just make it a collection of everything. >>> portal.invokeFactory("Collection", "test-collection") 'test-collection' >>> portal['test-collection'].setQuery([{ ... 'i': 'portal_type', ... 'o': 'plone.app.querystring.operation.string.is', ... 'v': 'Document', ... }]) >>> import transaction >>> transaction.commit() Now open the portlet manager for the site. >>> browser.open(portal_url + '/@@manage-portlets?_authenticator=' + getAuth()) Use the 'Add portlet' select box to add a collection portlet. >>> leftcolumn_form = browser.getForm(action=portal_url, index=1) >>> add_portlet_select = leftcolumn_form.getControl(name=":action", index=0) >>> val = "/++contextportlets++plone.leftcolumn/+/plone.portlet.collection.Collection" >>> add_portlet_select.getControl(value=val).selected = True >>> leftcolumn_form.submit() >>> import re # '\s' is white space, '+' is at least one, '*' is zero or more matches. >>> re.search('