Package: wwp.twitter
.. contents::.. Note!-----Update the following URLs to point to your:- code repository- bug tracker- questions/comments feedback mail(do not set a real mail, to avoid spams)Or remove it if not used.- Code repository: http://svn.somewhere.com/...- Questions and comments to somemailing_list- Report bugs at http://bug.somewhere.com/..Change history**************Changelog=========1.0 (xxxx-xx-xx)----------------- Created recipe with ZopeSkel[Cannon Scientific]Detailed Documentation**********************Introduction============This is a full-blown functional test. The emphasis here is on testing whatthe user may input and see, and the system is largely tested as a black box.We use PloneTestCase to set up this test as well, so we have a full Plone siteto play with. We *can* inspect the state of the portal, e.g. usingself.portal and self.folder, but it is often frowned upon since you are nottreating the system as a black box. Also, if you, for example, log in or setroles using calls like self.setRoles(), these are not reflected in the testbrowser, which runs as a separate session.Being a doctest, we can tell a story here.First, we must perform some setup. We use the testbrowser that is shippedwith Five, as this provides proper Zope 2 integration. Most of thedocumentation, though, is in the underlying zope.testbrower package.>>> from Products.Five.testbrowser import Browser>>> browser = Browser()>>> portal_url = self.portal.absolute_url()The following is useful when writing and debugging testbrowser tests. It letsus see all error messages in the error_log.>>> self.portal.error_log._ignored_exceptions = ()With that in place, we can go to the portal front page and log in. We willdo this using the default user from PloneTestCase:>>> from Products.PloneTestCase.setup import portal_owner, default_password>>> browser.open(portal_url)We have the login portlet, so let's use that.>>> browser.getControl(name='__ac_name').value = portal_owner>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()Here, we set the value of the fields on the login form and then simulate asubmit click.We then test that we are still on the portal front page:>>> browser.url == portal_urlTrueAnd we ensure that we get the friendly logged-in message:>>> "You are now logged in" in browser.contentsTrue-*- extra stuff goes here -*-The twitrss content type===============================In this section we are tesing the twitrss content type by performingbasic operations like adding, updadating and deleting twitrss contentitems.Adding a new twitrss content item--------------------------------We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()Then we select the type of item we want to add. In this case we select'twitrss' and click the 'Add' button to get to the add form.>>> browser.getControl('twitrss').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twitrss' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twitrss Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueAnd we are done! We added a new 'twitrss' content item to the portal.Updating an existing twitrss content item---------------------------------------Let's click on the 'edit' tab and update the object attribute values.>>> browser.getLink('Edit').click()>>> browser.getControl(name='title').value = 'New twitrss Sample'>>> browser.getControl('Save').click()We check that the changes were applied.>>> 'Changes saved' in browser.contentsTrue>>> 'New twitrss Sample' in browser.contentsTrueRemoving a/an twitrss content item--------------------------------If we go to the home page, we can see a tab with the 'New twitrssSample' title in the global navigation tabs.>>> browser.open(portal_url)>>> 'New twitrss Sample' in browser.contentsTrueNow we are going to delete the 'New twitrss Sample' object. First wego to the contents tab and select the 'New twitrss Sample' fordeletion.>>> browser.getLink('Contents').click()>>> browser.getControl('New twitrss Sample').click()We click on the 'Delete' button.>>> browser.getControl('Delete').click()>>> 'Item(s) deleted' in browser.contentsTrueSo, if we go back to the home page, there is no longer a 'New twitrssSample' tab.>>> browser.open(portal_url)>>> 'New twitrss Sample' in browser.contentsFalseAdding a new twitrss content item as contributor------------------------------------------------Not only site managers are allowed to add twitrss content items, butalso site contributors.Let's logout and then login as 'contributor', a portal member that has thecontributor role assigned.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = 'contributor'>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()We select 'twitrss' and click the 'Add' button to get to the add form.>>> browser.getControl('twitrss').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twitrss' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twitrss Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueDone! We added a new twitrss content item logged in as contributor.Finally, let's login back as manager.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = portal_owner>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)The twitschedule content type===============================In this section we are tesing the twitschedule content type by performingbasic operations like adding, updadating and deleting twitschedule contentitems.Adding a new twitschedule content item--------------------------------We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()Then we select the type of item we want to add. In this case we select'twitschedule' and click the 'Add' button to get to the add form.>>> browser.getControl('twitschedule').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twitschedule' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twitschedule Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueAnd we are done! We added a new 'twitschedule' content item to the portal.Updating an existing twitschedule content item---------------------------------------Let's click on the 'edit' tab and update the object attribute values.>>> browser.getLink('Edit').click()>>> browser.getControl(name='title').value = 'New twitschedule Sample'>>> browser.getControl('Save').click()We check that the changes were applied.>>> 'Changes saved' in browser.contentsTrue>>> 'New twitschedule Sample' in browser.contentsTrueRemoving a/an twitschedule content item--------------------------------If we go to the home page, we can see a tab with the 'New twitscheduleSample' title in the global navigation tabs.>>> browser.open(portal_url)>>> 'New twitschedule Sample' in browser.contentsTrueNow we are going to delete the 'New twitschedule Sample' object. First wego to the contents tab and select the 'New twitschedule Sample' fordeletion.>>> browser.getLink('Contents').click()>>> browser.getControl('New twitschedule Sample').click()We click on the 'Delete' button.>>> browser.getControl('Delete').click()>>> 'Item(s) deleted' in browser.contentsTrueSo, if we go back to the home page, there is no longer a 'New twitscheduleSample' tab.>>> browser.open(portal_url)>>> 'New twitschedule Sample' in browser.contentsFalseAdding a new twitschedule content item as contributor------------------------------------------------Not only site managers are allowed to add twitschedule content items, butalso site contributors.Let's logout and then login as 'contributor', a portal member that has thecontributor role assigned.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = 'contributor'>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()We select 'twitschedule' and click the 'Add' button to get to the add form.>>> browser.getControl('twitschedule').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twitschedule' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twitschedule Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueDone! We added a new twitschedule content item logged in as contributor.Finally, let's login back as manager.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = portal_owner>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)The twittertrends content type===============================In this section we are tesing the twittertrends content type by performingbasic operations like adding, updadating and deleting twittertrends contentitems.Adding a new twittertrends content item--------------------------------We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()Then we select the type of item we want to add. In this case we select'twittertrends' and click the 'Add' button to get to the add form.>>> browser.getControl('twittertrends').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twittertrends' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twittertrends Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueAnd we are done! We added a new 'twittertrends' content item to the portal.Updating an existing twittertrends content item---------------------------------------Let's click on the 'edit' tab and update the object attribute values.>>> browser.getLink('Edit').click()>>> browser.getControl(name='title').value = 'New twittertrends Sample'>>> browser.getControl('Save').click()We check that the changes were applied.>>> 'Changes saved' in browser.contentsTrue>>> 'New twittertrends Sample' in browser.contentsTrueRemoving a/an twittertrends content item--------------------------------If we go to the home page, we can see a tab with the 'New twittertrendsSample' title in the global navigation tabs.>>> browser.open(portal_url)>>> 'New twittertrends Sample' in browser.contentsTrueNow we are going to delete the 'New twittertrends Sample' object. First wego to the contents tab and select the 'New twittertrends Sample' fordeletion.>>> browser.getLink('Contents').click()>>> browser.getControl('New twittertrends Sample').click()We click on the 'Delete' button.>>> browser.getControl('Delete').click()>>> 'Item(s) deleted' in browser.contentsTrueSo, if we go back to the home page, there is no longer a 'New twittertrendsSample' tab.>>> browser.open(portal_url)>>> 'New twittertrends Sample' in browser.contentsFalseAdding a new twittertrends content item as contributor------------------------------------------------Not only site managers are allowed to add twittertrends content items, butalso site contributors.Let's logout and then login as 'contributor', a portal member that has thecontributor role assigned.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = 'contributor'>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()We select 'twittertrends' and click the 'Add' button to get to the add form.>>> browser.getControl('twittertrends').click()>>> browser.getControl(name='form.button.Add').click()>>> 'twittertrends' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'twittertrends Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueDone! We added a new twittertrends content item logged in as contributor.Finally, let's login back as manager.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = portal_owner>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)The TwitterPage content type===============================In this section we are tesing the TwitterPage content type by performingbasic operations like adding, updadating and deleting TwitterPage contentitems.Adding a new TwitterPage content item--------------------------------We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()Then we select the type of item we want to add. In this case we select'TwitterPage' and click the 'Add' button to get to the add form.>>> browser.getControl('TwitterPage').click()>>> browser.getControl(name='form.button.Add').click()>>> 'TwitterPage' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'TwitterPage Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueAnd we are done! We added a new 'TwitterPage' content item to the portal.Updating an existing TwitterPage content item---------------------------------------Let's click on the 'edit' tab and update the object attribute values.>>> browser.getLink('Edit').click()>>> browser.getControl(name='title').value = 'New TwitterPage Sample'>>> browser.getControl('Save').click()We check that the changes were applied.>>> 'Changes saved' in browser.contentsTrue>>> 'New TwitterPage Sample' in browser.contentsTrueRemoving a/an TwitterPage content item--------------------------------If we go to the home page, we can see a tab with the 'New TwitterPageSample' title in the global navigation tabs.>>> browser.open(portal_url)>>> 'New TwitterPage Sample' in browser.contentsTrueNow we are going to delete the 'New TwitterPage Sample' object. First wego to the contents tab and select the 'New TwitterPage Sample' fordeletion.>>> browser.getLink('Contents').click()>>> browser.getControl('New TwitterPage Sample').click()We click on the 'Delete' button.>>> browser.getControl('Delete').click()>>> 'Item(s) deleted' in browser.contentsTrueSo, if we go back to the home page, there is no longer a 'New TwitterPageSample' tab.>>> browser.open(portal_url)>>> 'New TwitterPage Sample' in browser.contentsFalseAdding a new TwitterPage content item as contributor------------------------------------------------Not only site managers are allowed to add TwitterPage content items, butalso site contributors.Let's logout and then login as 'contributor', a portal member that has thecontributor role assigned.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = 'contributor'>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)We use the 'Add new' menu to add a new content item.>>> browser.getLink('Add new').click()We select 'TwitterPage' and click the 'Add' button to get to the add form.>>> browser.getControl('TwitterPage').click()>>> browser.getControl(name='form.button.Add').click()>>> 'TwitterPage' in browser.contentsTrueNow we fill the form and submit it.>>> browser.getControl(name='title').value = 'TwitterPage Sample'>>> browser.getControl('Save').click()>>> 'Changes saved' in browser.contentsTrueDone! We added a new TwitterPage content item logged in as contributor.Finally, let's login back as manager.>>> browser.getLink('Log out').click()>>> browser.open(portal_url)>>> browser.getControl(name='__ac_name').value = portal_owner>>> browser.getControl(name='__ac_password').value = default_password>>> browser.getControl(name='submit').click()>>> browser.open(portal_url)Contributors************Cannon Scientific, AuthorDownload********