{ "info": { "author": "David Jonas", "author_email": "david@intk.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)" ], "description": ".. contents::\n\n.. Note!\n -----\n Update the following URLs to point to your:\n\n - code repository\n - bug tracker\n - questions/comments feedback mail\n (do not set a real mail, to avoid spams)\n\n Or remove it if not used.\n\n- Code repository: http://svn.somewhere.com/...\n- Questions and comments to somemailing_list\n- Report bugs at http://bug.somewhere.com/..\n\n\nChange history\n**************\n\nChangelog\n=========\n\n0.1 (xxxx-xx-xx)\n----------------\n\n- Created recipe with ZopeSkel\n [David Jonas]\n\nDetailed Documentation\n**********************\n\nIntroduction\n============\n\nThis is a full-blown functional test. The emphasis here is on testing what\nthe user may input and see, and the system is largely tested as a black box.\nWe use PloneTestCase to set up this test as well, so we have a full Plone site\nto play with. We *can* inspect the state of the portal, e.g. using \nself.portal and self.folder, but it is often frowned upon since you are not\ntreating the system as a black box. Also, if you, for example, log in or set\nroles using calls like self.setRoles(), these are not reflected in the test\nbrowser, which runs as a separate session.\n\nBeing a doctest, we can tell a story here.\n\nFirst, we must perform some setup. We use the testbrowser that is shipped\nwith Five, as this provides proper Zope 2 integration. Most of the \ndocumentation, though, is in the underlying zope.testbrower package.\n\n >>> from Products.Five.testbrowser import Browser\n >>> browser = Browser()\n >>> portal_url = self.portal.absolute_url()\n\nThe following is useful when writing and debugging testbrowser tests. It lets\nus see all error messages in the error_log.\n\n >>> self.portal.error_log._ignored_exceptions = ()\n\nWith that in place, we can go to the portal front page and log in. We will\ndo this using the default user from PloneTestCase:\n\n >>> from Products.PloneTestCase.setup import portal_owner, default_password\n\nBecause add-on themes or products may remove or hide the login portlet, this test will use the login form that comes with plone. \n\n >>> browser.open(portal_url + '/login_form')\n >>> browser.getControl(name='__ac_name').value = portal_owner\n >>> browser.getControl(name='__ac_password').value = default_password\n >>> browser.getControl(name='submit').click()\n\nHere, we set the value of the fields on the login form and then simulate a\nsubmit click. We then ensure that we get the friendly logged-in message:\n\n >>> \"You are now logged in\" in browser.contents\n True\n\nFinally, let's return to the front page of our site before continuing\n\n >>> browser.open(portal_url)\n\n-*- extra stuff goes here -*-\nThe Work content type\n===============================\n\nIn this section we are tesing the Work content type by performing\nbasic operations like adding, updadating and deleting Work content\nitems.\n\nAdding a new Work content item\n--------------------------------\n\nWe use the 'Add new' menu to add a new content item.\n\n >>> browser.getLink('Add new').click()\n\nThen we select the type of item we want to add. In this case we select\n'Work' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Work').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Work' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Work Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nAnd we are done! We added a new 'Work' content item to the portal.\n\nUpdating an existing Work content item\n---------------------------------------\n\nLet's click on the 'edit' tab and update the object attribute values.\n\n >>> browser.getLink('Edit').click()\n >>> browser.getControl(name='title').value = 'New Work Sample'\n >>> browser.getControl('Save').click()\n\nWe check that the changes were applied.\n\n >>> 'Changes saved' in browser.contents\n True\n >>> 'New Work Sample' in browser.contents\n True\n\nRemoving a/an Work content item\n--------------------------------\n\nIf we go to the home page, we can see a tab with the 'New Work\nSample' title in the global navigation tabs.\n\n >>> browser.open(portal_url)\n >>> 'New Work Sample' in browser.contents\n True\n\nNow we are going to delete the 'New Work Sample' object. First we\ngo to the contents tab and select the 'New Work Sample' for\ndeletion.\n\n >>> browser.getLink('Contents').click()\n >>> browser.getControl('New Work Sample').click()\n\nWe click on the 'Delete' button.\n\n >>> browser.getControl('Delete').click()\n >>> 'Item(s) deleted' in browser.contents\n True\n\nSo, if we go back to the home page, there is no longer a 'New Work\nSample' tab.\n\n >>> browser.open(portal_url)\n >>> 'New Work Sample' in browser.contents\n False\n\nAdding a new Work content item as contributor\n------------------------------------------------\n\nNot only site managers are allowed to add Work content items, but\nalso site contributors.\n\nLet's logout and then login as 'contributor', a portal member that has the\ncontributor role assigned.\n\n >>> browser.getLink('Log out').click()\n >>> browser.open(portal_url + '/login_form')\n >>> browser.getControl(name='__ac_name').value = 'contributor'\n >>> browser.getControl(name='__ac_password').value = default_password\n >>> browser.getControl(name='submit').click()\n >>> browser.open(portal_url)\n\nWe use the 'Add new' menu to add a new content item.\n\n >>> browser.getLink('Add new').click()\n\nWe select 'Work' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Work').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Work' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Work Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nDone! We added a new Work content item logged in as contributor.\n\nFinally, let's login back as manager.\n\n >>> browser.getLink('Log out').click()\n >>> browser.open(portal_url + '/login_form')\n >>> browser.getControl(name='__ac_name').value = portal_owner\n >>> browser.getControl(name='__ac_password').value = default_password\n >>> browser.getControl(name='submit').click()\n >>> browser.open(portal_url)\n\n\n\n\nContributors\n************\n\nDavid Jonas, Author\n\n\nDownload\n********", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://svn.plone.org/svn/collective/", "keywords": "type work folderish", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "Products.mediaWork", "package_url": "https://pypi.org/project/Products.mediaWork/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Products.mediaWork/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://svn.plone.org/svn/collective/" }, "release_url": "https://pypi.org/project/Products.mediaWork/0.2/", "requires_dist": null, "requires_python": null, "summary": "Folderish type to store information and media about a work of art", "version": "0.2" }, "last_serial": 785182, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "fa8f92e71b8f8f5d5ba7f7923a35a744", "sha256": "2a1e8bdc8ff1604f0318e429b45bf2f39df09c2adde76ccb109713485c44ecec" }, "downloads": -1, "filename": "Products.mediaWork-0.2.tar.gz", "has_sig": false, "md5_digest": "fa8f92e71b8f8f5d5ba7f7923a35a744", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11329, "upload_time": "2013-01-16T13:50:24", "url": "https://files.pythonhosted.org/packages/56/3d/7d21e88976373aa8d842e3826f63d8ce013a9507ad6541e977ed3a37116a/Products.mediaWork-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fa8f92e71b8f8f5d5ba7f7923a35a744", "sha256": "2a1e8bdc8ff1604f0318e429b45bf2f39df09c2adde76ccb109713485c44ecec" }, "downloads": -1, "filename": "Products.mediaWork-0.2.tar.gz", "has_sig": false, "md5_digest": "fa8f92e71b8f8f5d5ba7f7923a35a744", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11329, "upload_time": "2013-01-16T13:50:24", "url": "https://files.pythonhosted.org/packages/56/3d/7d21e88976373aa8d842e3826f63d8ce013a9507ad6541e977ed3a37116a/Products.mediaWork-0.2.tar.gz" } ] }