==================== A functional doctest ==================== Set up testbrowser:: >>> 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="title").value = "Test Document" >>> browser.getControl(name="form.button.save").click() >>> 'Changes saved' in browser.contents True Create a collection for testing purposes. Just make it a collection of everything. >>> browser.open(portal_url + '/createObject?type_name=Collection') >>> browser.getControl(name="title").value = "Test Collection" >>> browser.getControl(name="addindex").value = ["portal_type"] >>> browser.getControl('Add').click() >>> browser.getControl(name="addoperator").value = ['plone.app.querystring.operation.selection.is'] >>> browser.getControl('Add').click() >>> browser.getControl(name='query.v:records:list').value = ['Document'] >>> browser.getControl(name="form.button.save").click() >>> browser.url == portal_url + "/test-collection/" True Now open the portlet manager for the site. >>> browser.open(portal_url + '/@@manage-portlets') 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('\s*Add Collection Portlet\s*', browser.contents) is not None True Use your new collection for testing. It should already be available at the root of the site. Show only two items to make the test sanely terse. >>> browser.getControl(name="form.target_collection").getControl(value="/test-collection").selected = True >>> browser.getControl(name="form.target_collection.update").click() >>> browser.getControl(name="form.header").value = "Test Collection" >>> browser.getControl(label="Limit").value = "2" >>> browser.getControl(name="form.actions.save").click() >>> browser.url == portal_url + "/@@manage-portlets" True Go to the home page and see if the portlet looks OK. >>> browser.open(portal_url) >>> import re >>> match = re.search('
Test Collection
Test Document
Test Collection - More…
Now test what happens if we toggle the "show more link" option. >>> browser.open(portal_url + '/@@manage-portlets') >>> browser.getLink(url="http://nohost/plone/++contextportlets++plone.leftcolumn/test-collection/edit?referer=http%3A//nohost/plone/%40%40manage-portlets").click() >>> re.search('\s*Edit Collection Portlet\s*', browser.contents) is not None True >>> browser.getControl(label="Show more... link").selected = False >>> browser.getControl(name="form.actions.save").click() >>> print browser.url http://nohost/plone/@@manage-portlets Go back to the home page and see if it looks OK. >>> browser.open(portal_url) >>> match = re.search('
Test Collection
Test Document
Now test what happens if we toggle the "show dates" option. >>> browser.open(portal_url + '/@@manage-portlets') >>> browser.getLink(url="http://nohost/plone/++contextportlets++plone.leftcolumn/test-collection/edit?referer=http%3A//nohost/plone/%40%40manage-portlets").click() >>> re.search('\s*Edit Collection Portlet\s*', browser.contents) is not None True >>> browser.getControl(label="Show dates").selected = True >>> browser.getControl(name="form.actions.save").click() >>> print browser.url http://nohost/plone/@@manage-portlets Make sure the dates show up:: >>> browser.open(portal_url) >>> '' in browser.contents True >>> from DateTime import DateTime >>> cur_year = DateTime().year() >>> re.search('.*{0}.*'.format(cur_year), browser.contents) is not None True