{ "info": { "author": "Espen Moe-Nilssen", "author_email": "espen@medialog.no", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)" ], "description": "Change history\n**************\n\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\n >>> browser.open(portal_url)\n\nWe have the login portlet, so let's use that.\n\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.\n\nWe then test that we are still on the portal front page:\n\n >>> browser.url == portal_url\n True\n\nAnd we ensure that we get the friendly logged-in message:\n\n >>> \"You are now logged in\" in browser.contents\n True\n\n\n-*- extra stuff goes here -*-\nThe Publication content type\n===============================\n\nIn this section we are tesing the Publication content type by performing\nbasic operations like adding, updadating and deleting Publication content\nitems.\n\nAdding a new Publication 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'Publication' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Publication').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Publication' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Publication Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nAnd we are done! We added a new 'Publication' content item to the portal.\n\nUpdating an existing Publication 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 Publication 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 Publication Sample' in browser.contents\n True\n\nRemoving a/an Publication content item\n--------------------------------\n\nIf we go to the home page, we can see a tab with the 'New Publication\nSample' title in the global navigation tabs.\n\n >>> browser.open(portal_url)\n >>> 'New Publication Sample' in browser.contents\n True\n\nNow we are going to delete the 'New Publication Sample' object. First we\ngo to the contents tab and select the 'New Publication Sample' for\ndeletion.\n\n >>> browser.getLink('Contents').click()\n >>> browser.getControl('New Publication 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 Publication\nSample' tab.\n\n >>> browser.open(portal_url)\n >>> 'New Publication Sample' in browser.contents\n False\n\nAdding a new Publication content item as contributor\n------------------------------------------------\n\nNot only site managers are allowed to add Publication 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)\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 'Publication' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Publication').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Publication' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Publication Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nDone! We added a new Publication 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)\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\nThe Boardfile content type\n===============================\n\nIn this section we are tesing the Boardfile content type by performing\nbasic operations like adding, updadating and deleting Boardfile content\nitems.\n\nAdding a new Boardfile 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'Boardfile' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Boardfile').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Boardfile' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Boardfile Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nAnd we are done! We added a new 'Boardfile' content item to the portal.\n\nUpdating an existing Boardfile 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 Boardfile 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 Boardfile Sample' in browser.contents\n True\n\nRemoving a/an Boardfile content item\n--------------------------------\n\nIf we go to the home page, we can see a tab with the 'New Boardfile\nSample' title in the global navigation tabs.\n\n >>> browser.open(portal_url)\n >>> 'New Boardfile Sample' in browser.contents\n True\n\nNow we are going to delete the 'New Boardfile Sample' object. First we\ngo to the contents tab and select the 'New Boardfile Sample' for\ndeletion.\n\n >>> browser.getLink('Contents').click()\n >>> browser.getControl('New Boardfile 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 Boardfile\nSample' tab.\n\n >>> browser.open(portal_url)\n >>> 'New Boardfile Sample' in browser.contents\n False\n\nAdding a new Boardfile content item as contributor\n------------------------------------------------\n\nNot only site managers are allowed to add Boardfile 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)\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 'Boardfile' and click the 'Add' button to get to the add form.\n\n >>> browser.getControl('Boardfile').click()\n >>> browser.getControl(name='form.button.Add').click()\n >>> 'Boardfile' in browser.contents\n True\n\nNow we fill the form and submit it.\n\n >>> browser.getControl(name='title').value = 'Boardfile Sample'\n >>> browser.getControl('Save').click()\n >>> 'Changes saved' in browser.contents\n True\n\nDone! We added a new Boardfile 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)\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\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://medialog.no", "keywords": "", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "medialog.boardfile", "package_url": "https://pypi.org/project/medialog.boardfile/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/medialog.boardfile/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://medialog.no" }, "release_url": "https://pypi.org/project/medialog.boardfile/1.6.2/", "requires_dist": null, "requires_python": null, "summary": "Boardfile content type", "version": "1.6.2" }, "last_serial": 1857235, "releases": { "1.0": [], "1.1": [ { "comment_text": "", "digests": { "md5": "fb85b6a3409e64ba55d41049fbc28fc5", "sha256": "284c2dcc05ce2c6567fc2e9973cb1f15dbc577d166a71478989d5faa36bfeb3a" }, "downloads": -1, "filename": "medialog.boardfile-1.1.tar.gz", "has_sig": false, "md5_digest": "fb85b6a3409e64ba55d41049fbc28fc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31377, "upload_time": "2010-06-08T11:07:04", "url": "https://files.pythonhosted.org/packages/a4/42/0bd046ed43420de4f20c075826ad8bc1a1c188bc0c9cb935879cf2b5535f/medialog.boardfile-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "07afb2170613829d252a35686569e7a8", "sha256": "1cb380a42bb49550a52786163d15876827522225ce38cf9cf9772fd4f539c014" }, "downloads": -1, "filename": "medialog.boardfile-1.2.tar.gz", "has_sig": false, "md5_digest": "07afb2170613829d252a35686569e7a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34173, "upload_time": "2010-09-28T11:52:01", "url": "https://files.pythonhosted.org/packages/e8/09/695d7cf174535a4fe244b1589916c85c23f80c87c1d67cbf3eab4b10ea4c/medialog.boardfile-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "cad164afb0213387da2852be8bcc86c2", "sha256": "42294bc6d6937c519b604324b3b27a739f5d6bf50263b413d066a3569395125c" }, "downloads": -1, "filename": "medialog.boardfile-1.3.tar.gz", "has_sig": false, "md5_digest": "cad164afb0213387da2852be8bcc86c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36439, "upload_time": "2010-09-28T14:08:25", "url": "https://files.pythonhosted.org/packages/d8/d3/113c2de698d35f3415725b05b4e391684587cf28058ec5adfbcaff1a2803/medialog.boardfile-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "14ce40f8f6d87b1598e8fd255ad97e13", "sha256": "d33fb1d17e28f7b18264f49e71ccb68a6c399d870d735a968de6b75735936ba6" }, "downloads": -1, "filename": "medialog.boardfile-1.3.1.tar.gz", "has_sig": false, "md5_digest": "14ce40f8f6d87b1598e8fd255ad97e13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36460, "upload_time": "2010-09-28T14:17:53", "url": "https://files.pythonhosted.org/packages/40/c8/81deed0427aee3a5990f182d60e946cda3b6e74af0f13e135ed2daac99e2/medialog.boardfile-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "f190fbb399756682f26737c66eacf7c0", "sha256": "40cfeaaac869902329b150b2c8e38c19178e88d2dc09a24d9584c9af9f87fbae" }, "downloads": -1, "filename": "medialog.boardfile-1.3.2.tar.gz", "has_sig": false, "md5_digest": "f190fbb399756682f26737c66eacf7c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31883, "upload_time": "2010-09-28T16:04:06", "url": "https://files.pythonhosted.org/packages/ad/3e/d573982422dfd4145af50bf0ba2e6d20a3628f18149f6851fac931637e49/medialog.boardfile-1.3.2.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "aa13632f839840957430a51964bf7470", "sha256": "e0d05631b0f157d15462c89b7cd90ade2a071645e554505d17de437f9ded8bd8" }, "downloads": -1, "filename": "medialog.boardfile-1.6.tar.gz", "has_sig": false, "md5_digest": "aa13632f839840957430a51964bf7470", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33731, "upload_time": "2011-11-28T10:28:39", "url": "https://files.pythonhosted.org/packages/08/a2/1f7e8e8f8a617227e2b1ffbd05409ef687a571aa84af391bd19c24b5d064/medialog.boardfile-1.6.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "82e6c16574befcaf994adff7fe86d7f3", "sha256": "3363ded2b27566bedc89f84a84fbae727bb9b3a3bac0e7c51c34dfec327f6fd9" }, "downloads": -1, "filename": "medialog.boardfile-1.6.1.tar.gz", "has_sig": false, "md5_digest": "82e6c16574befcaf994adff7fe86d7f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33729, "upload_time": "2011-11-28T10:49:15", "url": "https://files.pythonhosted.org/packages/1b/b2/16aa44400ac488294d7d18ac42cea05355d63158d39ac29b61b5edf7d333/medialog.boardfile-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "built for Darwin-15.0.0", "digests": { "md5": "8c57742a2de19fa90f7dc0b65dee47a6", "sha256": "0c9f959712813fb1ab4ddae7e697c0a3836159c8e073dff61a6ce8ef97f56716" }, "downloads": -1, "filename": "medialog.boardfile-1.6.2.macosx-10.11-intel.tar.gz", "has_sig": false, "md5_digest": "8c57742a2de19fa90f7dc0b65dee47a6", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 33057, "upload_time": "2015-12-11T10:44:31", "url": "https://files.pythonhosted.org/packages/28/77/69e8d6e48093dccc64e6a062e6de444a9a1a7fc06b3226a7473495b6ad28/medialog.boardfile-1.6.2.macosx-10.11-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "0e7df7bb5c01c9f3489cd16d46ea32dd", "sha256": "499e1bf82e4febfd4c106c8f3b3498542d004cda417c2584bf306fe84d94f156" }, "downloads": -1, "filename": "medialog.boardfile-1.6.2.tar.gz", "has_sig": false, "md5_digest": "0e7df7bb5c01c9f3489cd16d46ea32dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22949, "upload_time": "2015-12-11T10:41:01", "url": "https://files.pythonhosted.org/packages/78/7d/1d8f06adcb282e1ea8c9e0f69041a7cf1fcf75e9e8fe84df467d95e9218f/medialog.boardfile-1.6.2.tar.gz" } ] }, "urls": [ { "comment_text": "built for Darwin-15.0.0", "digests": { "md5": "8c57742a2de19fa90f7dc0b65dee47a6", "sha256": "0c9f959712813fb1ab4ddae7e697c0a3836159c8e073dff61a6ce8ef97f56716" }, "downloads": -1, "filename": "medialog.boardfile-1.6.2.macosx-10.11-intel.tar.gz", "has_sig": false, "md5_digest": "8c57742a2de19fa90f7dc0b65dee47a6", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 33057, "upload_time": "2015-12-11T10:44:31", "url": "https://files.pythonhosted.org/packages/28/77/69e8d6e48093dccc64e6a062e6de444a9a1a7fc06b3226a7473495b6ad28/medialog.boardfile-1.6.2.macosx-10.11-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "0e7df7bb5c01c9f3489cd16d46ea32dd", "sha256": "499e1bf82e4febfd4c106c8f3b3498542d004cda417c2584bf306fe84d94f156" }, "downloads": -1, "filename": "medialog.boardfile-1.6.2.tar.gz", "has_sig": false, "md5_digest": "0e7df7bb5c01c9f3489cd16d46ea32dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22949, "upload_time": "2015-12-11T10:41:01", "url": "https://files.pythonhosted.org/packages/78/7d/1d8f06adcb282e1ea8c9e0f69041a7cf1fcf75e9e8fe84df467d95e9218f/medialog.boardfile-1.6.2.tar.gz" } ] }